在C中释放内存的模式?

Abi*_*ale 5 c free memory-management

我目前正在开发一个基于C的应用程序,因为它以一种非反模式方式释放内存.我是一名记忆管理爱好者.

我的主要问题是我在各种不同的范围内声明了内存结构,并且这些结构通过引用传递给其他函数.其中一些函数可能会抛出错误并退出().

如果我在一个范围内退出(),但是我的所有数据结构都不在该范围内,我如何解放我的结构?

我觉得我需要将它全部包装在一个伪造的异常处理程序中并让处理程序处理释放,但这看起来仍然很难看,因为它必须知道我可能需要或不需要释放的所有东西......

ojb*_*ass 4

考虑包装malloc并以规范的方式使用它们。跟踪您分配的内存(可能在链接列表中)并使用包装器退出以枚举您的内存以释放它。您还可以使用附加参数和链表结构的成员来命名内存。在分配的内存高度依赖于范围的应用程序中,您会发现自己正在泄漏内存,这可能是转储内存并分析它的好方法。

更新: 应用程序中的线程将使这变得非常复杂。请参阅有关线程问题的其他答案。