c - 跟踪内存分配

标签 c memory-management

是否有任何方法可以跟踪 C 程序的每一步分配、重新分配和释放了多少内存?我的意思是程序中的所有分配都是一步一步的,而不是错误、内存泄漏或类似的东西。

最佳答案

一种常见的方法是用宏覆盖 malloc/free:

#define malloc(size) custom_malloc(size, __FILE__, __LINE__)

然后您可以让 custom_malloc 执行正常的 malloc,并将分配信息转储到一个文件(或任何您想用它做的事情)。

要跟踪有多少内存在 free 中被释放,一种选择是在每次 malloc 调用时分配一个额外的字段来存储分配的大小,然后您可以在释放时检查它。 或者您可以将 malloc/free 指针转储到文件,然后编写脚本进行后处理并将它们排列起来。这在某种程度上取决于您要对信息做什么。

关于c - 跟踪内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10515127/

相关文章:

c - 指针(树)如何在 2 条不同的行中返回 2 个不同的值?

c、段错误

c - C 中函数指针声明中带括号的三元表达式返回函数名称的基本原理

pointers - 我可以返回一个结构,该结构使用特征实现中的 PhantomData 来为原始指针添加生命周期而不污染接口(interface)吗?

objective-c - 引擎盖下的 __weak 限定变量是怎么回事?

c++ - 在 malloc 导致崩溃后为数组赋值

ios - Objective-C/NSObject 指针与 C 指针的比较

c - 是什么导致 16 位架构上的地址错误?

c++ - 为什么必须动态分配扩展数组才能使该函数正常工作 C++

django - Heroku 上的内存监控