C 释放结构体的正确方法
C the right way to free a struct
假设你想释放一个恰好是结构的链表节点,这是防止内存泄漏的正确方法
结构
struct node{
int value;
struct node *next;
};
我的解决方案:
free(node);
或
free(node->next);
free(node);
如果 none 个正确,请用你的答案纠正我
谢谢 :>
这取决于数据是如何分配的。如果它全部由 malloc
分配,那么是的,在释放整个结构之前,您需要通过几个步骤将单个结构指针成员释放到此类数据。
如果您使用 malloc 分配内存,calloc 和 realloc free 是释放严格的正确方法。
这些是 C 中的动态内存分配。因此只有当您使用这些运算符动态分配内存时,您才能使用 free。
假设你想释放一个恰好是结构的链表节点,这是防止内存泄漏的正确方法 结构
struct node{
int value;
struct node *next;
};
我的解决方案:
free(node);
或
free(node->next);
free(node);
如果 none 个正确,请用你的答案纠正我
谢谢 :>
这取决于数据是如何分配的。如果它全部由 malloc
分配,那么是的,在释放整个结构之前,您需要通过几个步骤将单个结构指针成员释放到此类数据。
如果您使用 malloc 分配内存,calloc 和 realloc free 是释放严格的正确方法。
这些是 C 中的动态内存分配。因此只有当您使用这些运算符动态分配内存时,您才能使用 free。