说,我现在正在使用Visual Leak Detector(VLD)检查服务应用程序中的内存泄漏。并且,由于大量的内存分配发生在静态对象中,所以我只是想知道,VLD可以排除那些误报内存泄漏(它不应该被视为真正的内存泄漏)
非常感谢
答案 0 :(得分: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堆就可以了!