列出“冷”记忆区

时间:2011-12-26 17:36:01

标签: c++ memory-leaks

我正在尝试寻找一个看起来像内存泄漏的服务器软件中的一个非常难以回避的错误,但memcheck根本没有帮助。我的猜测是,实例化并且从未删除的内存确实没有泄露,所以有一个引用它,但现在对程序没用,应该删除。 是否有一个工具可以计算内存中的访问而不是引用,因此评估堆中对象的有效使用情况?

2 个答案:

答案 0 :(得分:4)

我最终实现了自己的工具。 我的方法与我的意图略有不同:我写了malloc hooking library。它挂起malloc,realloc和free,并维护一个生活malloc内存块列表。无论何时将SIGUSR1发送到应用程序,它都会将其信息转储到文件中,并将其评估为Mathematica表达式。 Mathematica笔记本最终提供了一些非常有用的图表:最高评分的实例by call stack,以及calls to malloc的完整概述。使用这些工具,我只需将鼠标悬停在距离第二个图形的中心绿点最胖和最远的地方,而且,瞧,我有一个地址可以实例化未泄漏但无用的内存。

P.S。 您可以在第二个图中看到的循环调用肯定是libc的backtrace()中的错误。

答案 1 :(得分:0)

这个工具(Visual Leak Detector)可能对您有所帮助。 它是免费的。

http://vld.codeplex.com/