假设您已使用 malloc() 为结构指针分配内存并为其成员赋值,如果结构的成员之一也是指向另一个动态分配的指针,您将如何释放内存同时确保不会发生内存泄漏内存块?
提示使用对
free()
的嵌套调用以正确的顺序释放所有动态分配的内存块,以防止内存泄漏。
您需要先释放结构中的所有指针,然后释放结构本身。
void free_myStruct(struct myStruct *struct_ptr) {
if (struct_ptr->ptr) free(struct_ptr->ptr);
free(struct_ptr);
}
除非给定/要求您编写一个专门的
free()
返回一些值,否则您将无法编写嵌套的 free()
因为 free()
有一个 void
返回但有一个 void *
参数。