if (list.free_elems) { int i; Element* elem_ptr = list.ptr; for (i=list.length; i--; ) { (*(*(*elem_ptr).type_ptr).destructor)(elem_ptr.ptr); free(elem_ptr.ptr); elem_ptr++; } } if (list.free_ptr) { free(list.ptr); }