gpt4 book ai didi

c - 销毁结构(释放内存)

转载 作者:行者123 更新时间:2023-12-05 01:36:20 25 4
gpt4 key购买 nike

每当您为用户定义的结构编写析构函数时,您是尝试深入了解结构并尽可能多地释放它,还是只是释放结构本身并期望调用者注意内存泄漏。

我可以想到这两种方法的利弊。是否有标准的社区接受的编写析构函数的方式?

玩具示例

struct node {
int *ptr;
int num;
}

void node_free(struct node *n) {
/* Would you include this? */
if (n->ptr != NULL) free(n->ptr);
free(n);
}

提出问题的场景

在图算法中,我希望能够一次将顶点结构插入到多个列表中。我创建了一个指向顶点的包装结构,然后我可以将这些包装结构插入到列表中。当我构造包装器时,我传递了一个指向顶点结构的指针。当我破坏包装器时,我也不能破坏顶点结构。所以这就是让我问这个问题的场景:是否有一种标准的方法来编写析构函数,让程序员不必担心这些细节?

最佳答案

为自定义结构使用自定义析构函数的主要兴趣正是这样:确保同时释放结构的每个分配部分。 struct 用户应该分配它并开始使用它,然后在它不再使用时销毁它。

这么简短的回答:

关于c - 销毁结构(释放内存),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58860100/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com