2012-05-24 25 views
1

说,我现在使用可视泄漏检测器(VLD)来检查我们的服务应用程序中的内存泄漏。而且,由于大量的内存分配发生在静态对象,所以我会想,能VLD排除那些误报内存泄漏(它不应该被看作是真正的内存泄漏)可视检漏仪是否可以排除假阳性内存泄漏?

非常感谢

回答

2

经过一番调查后,我发现这个VLD不能排除那些误报内存泄漏(如静态对象中的新增内容),因为它也在其vld.dll中使用全局静态对象,并且它的dtor会报告可能的内存泄漏。由于无法确保它们的析构函数序列,因此无法使用VLD检测静态对象中的内存泄漏。

但是,我也找到了一个旁路解决方案,因为您可以修改此工具的源代码,您可以使用atexit在您的ctor中注册reportMemoryLeak函数,以确保在dtor之后调用此方法。

而且坦率地说,这真的不是那么直接,所以看到这样一个 http://cfc.kizzx2.com/index.php/detecting-memory-leaks-with-windbg-the-modern-and-free-way/ ,使用WinDbg + DebugCRT堆是好的!