C 释放结构的正确方法

Posted

技术标签:

【中文标题】C 释放结构的正确方法【英文标题】:C the right way to free a struct 【发布时间】:2022-01-13 07:42:43 【问题描述】:

假设您想释放一个链表节点,该节点恰好是一个结构,这是防止内存泄漏的正确方法 结构体

struct node
    int value;
    struct node *next;
;

我的解决方案:

free(node);

free(node->next);
free(node);

如果这些都不正确,请用你的答案纠正我 谢谢:>

【问题讨论】:

您使用malloccallocrealloc 分配的所有内容都需要使用free 释放。话虽如此,做free(node->next) 可能不是一个好主意。 感谢它的帮助 @procoder35 没有上下文,这个问题没有意义。 【参考方案1】:

这取决于数据的分配方式。如果它全部由malloc 分配,那么是的,您需要在释放整个结构之前通过几个步骤释放指向此类数据的各个结构指针成员。

【讨论】:

【参考方案2】:

如果您使用 malloc 分配内存,calloc 和 realloc free 是释放严格的正确方法。

这些是 C 中的动态内存分配。因此,只有当您使用这些运算符动态分配内存时,您才能使用 free。

【讨论】:

以上是关于C 释放结构的正确方法的主要内容,如果未能解决你的问题,请参考以下文章

共享内存实现上的 C++ 内存池:这种分配和释放方法是不是正确?

释放返回变量内存的正确方法

如果程序因错误而提前退出,那么释放动态分配的内存的正确方法是啥?

在 C# 中释放内存的正确方法是啥

如何从 SoftwareBitmap (UWP) 正确释放 BitmapBuffer?

C:正确释放多维数组的内存