C 编程中使用嵌套指针的内存管理

问题描述 投票:0回答:1

假设您已使用 malloc() 为结构指针分配内存并为其成员赋值,如果结构的成员之一也是指向另一个动态分配的指针,您将如何释放内存同时确保不会发生内存泄漏内存块?

提示使用对

free()
的嵌套调用以正确的顺序释放所有动态分配的内存块,以防止内存泄漏。

pointers
1个回答
0
投票

您需要先释放结构中的所有指针,然后释放结构本身。

void free_myStruct(struct myStruct *struct_ptr) {
    if (struct_ptr->ptr) free(struct_ptr->ptr);
    free(struct_ptr);
}

除非给定/要求您编写一个专门的

free()
返回一些值,否则您将无法编写嵌套的
free()
因为
free()
有一个
void
返回但有一个
void *
参数。

© www.soinside.com 2019 - 2024. All rights reserved.