什么是C / C ++程序及其插件DLL最好的空闲内存泄漏检测器?

什么是C / C ++程序及其插件DLL最好的空闲内存泄漏检测器?

What is the best free memory leak detector for a C/C++ program and its plug-in DLLs?

我有一个.exe和.exe加载的许多插件.dll模块。 (我都有两者的源代码。)跨平台(有源代码)的解决方案是理想的,但是该平台可以缩小到WinXP和Visual Studio(在我的例子中是7.1 / 2003)。

内置的VS泄漏检测器仅提供从中调用new / malloc的行,但是我有一个包装程序用于分配,因此完整的符号堆栈跟踪将是最佳选择。

该检测器还能够检测.exe及其随附的插件.dll模块中的泄漏。


我个人使用Visual Leak Detector,尽管它会在大块泄漏时引起较大的延迟(它会显示整个泄漏块的内容)。


如果您不想重新编译(如Visual Leak Detector所要求的),我建议您使用WinDbg,它既强大又快速(尽管使用起来并不像人们期望的那么容易)。

另一方面,如果您不想弄乱WinDbg,可以看看UMDH,它也是由Microsoft开发的,更容易学习。

看一下这些链接,以了解有关WinDbg,内存泄漏和一般内存管理的更多信息:

  • 使用Windbg进行内存泄漏检测
  • MFC中的内存泄漏检测
  • 常用WinDbg命令(按主题分组)
  • C / C ++内存损坏和内存泄漏
  • 内存管理参考
  • 使用LeakDiag调试非托管内存泄漏
  • 堆:乐趣和痛苦


我在Rational Purify方面有很好的经验。我也听说过关于Valgrind的事情


对于我来说,我使用解脱器来定位泄漏点。我很满意。


我免费提供的内存分析器MemPro可让您比较2个快照,并为所有分配提供堆栈跟踪。


正如我的几个朋友所发布的,有许多免费的C ++检漏仪。
所有这些都会在运行代码时导致开销,大约慢20%。
我将Visual Leak Detector用于Visual C ++ 2008/2010/2012,可以从中下载源代码-在此处输入链接描述。


在Code Project上尝试Jochen Kalmbach的内存泄漏检测器。
上次检查时,最新版本的URL在注释中的某个位置。


推荐阅读