c - 破坏结构(释放内存)
问题描述
每当您为用户定义的结构编写析构函数时,您是尝试深入到结构中并尽可能地释放,还是只是释放结构本身并期望调用者小心内存泄漏。
我可以想到这两种方法的优缺点。是否有标准的社区接受的编写析构函数的方式?
玩具示例
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 用户应该分配它并开始使用它,然后在它不再有任何用处时将其销毁。
如此简短的回答:是的
推荐阅读
- amazon-web-services - Web 应用程序如何与 AWS Cloudfront 共享签名 cookie?
- laravel - 如何提取所有关于 API 的 Amazon SES 统计数据?
- xamarin.forms - 具有自定义功能的底部栏
- firebase - 扑。当用户更新个人资料图片时,我希望管理员批准
- python - Python中梯度下降的数值优化
- node.js - passport.js 错误:无法将用户序列化到会话中
- c# - 如果满足while条件则退出循环
- python - Python XenAPI 失败
- c# - 如何扫描 emphreal 端口?
- .net - 如何以角度将用户信息传递到后端