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

我有一个.exe和许多插件.dll模块的.exe加载。 (我有两个来源)。跨平台(与源)解决scheme将是理想的,但平台可以缩小到WinXP和Visual Studio(7.1 / 2003在我的情况)。

内置的VS泄漏检测器只给出new / malloc被调用的行,但是我有一个分配的包装器,所以完整的符号堆栈跟踪将是最好的。

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

我个人使用Visual Leak Detector ,尽pipe当大块泄漏时(它会显示整个泄漏块的内容),可能会导致大的延迟。

如果你不想重新编译(就像Visual Leak Detector所要求的那样),我会推荐WinDbg ,它既强大又快速(尽pipe它不像人们想要的那样容易使用)。

另一方面,如果你不想搞乱WinDbg,你可以看看UMDH ,它也是由微软开发的,学习起来也比较容易。

看看这些链接,以便更多地了解WinDbg,内存泄漏和内存pipe理:

  • 内存泄漏检测使用Windbg
  • MFC中的内存泄漏检测
  • 常见的WinDbg命令(按主题分组)
  • C / C ++内存损坏和内存泄漏
  • 内存pipe理参考
  • 使用LeakDiagdebugging非托pipe内存泄漏
  • 堆:快乐和痛苦

我对Rational Purify有很好的经验。 我也听过Valgrind的好东西

至于我,我用德拉克来find泄漏。 我很满意。

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

在代码项目上试用Jochen Kalmbach的内存泄漏检测器 。 最新版本的URL在上次检查时在评论中的某处。

正如我的几个朋友所发布的,C ++有许多免费的检漏仪。 所有这些都会在运行你的代码时产生开销,大约慢了20%。 我为Visual C ++ 2008/2010/2012提供了Visual Leak Detector ,您可以从这里下载源代码 – input链接描述 。