【发布时间】:2012-02-22 20:36:16
【问题描述】:
如果我们想检查 C++ 程序中的内存泄漏,我们可以重载 new 和 delete 运算符来跟踪分配的内存。如果我们想检查 C 程序中的泄漏怎么办?由于 C 中没有运算符重载,我们是否可以重写 malloc 函数指针以拦截对 malloc 的调用并跟踪内存分配?有没有更简单的方法而不使用任何外部实用程序?请提供一些代码,因为我不熟悉重写方法指针。
注意:我想在没有任何外部实用程序的情况下进行练习。
【问题讨论】:
-
@MitchWheat 我提到我不能使用任何外部实用程序
-
好吧,如果这是为了学习,你可以了解一下 valgrind 是如何做到的......
-
@Mike G:你可以自己写。你也可以穿毛衣……
-
虽然受到一些人的谴责,Writing Solid Code 有一些有趣的想法。对于责备,请参阅ACCU 的评论。这本书很旧,并且可以追溯到 C89 标准刚刚完成并且所有编译器都支持它之前;有些地方有点古怪。但是内存分配跟踪被广泛讨论,并且总体态度(“强化您的子系统”等)是好的。