比方说,我现在使用可视化泄漏检测器(VLD)来检查服务应用程序中的内存泄漏。而且,由于许多内存分配发生在静态对象中,所以我想知道,VLD是否可以排除那些错误的内存泄漏(它不应该被视为真正的内存泄漏)。
非常感谢
发布于 2012-05-31 11:11:32
经过一些调查,我发现这个VLD不能排除那些误报的内存泄漏(比如静态对象中的new ),因为这也在它的vld.dll中使用了一个全局静态对象,并且它的dtor将报告可能的内存泄漏。因为你不能确保它们的析构函数序列,所以你不能使用VLD来检测静态对象中的内存泄漏。
然而,我也找到了一个旁路解决方案,因为你可以修改这个工具的源代码,你可以使用atexit在你的ctor中注册reportMemoryLeak函数,这将确保这个方法在dtor之后被调用。
坦率地说,这真的不是那么直接,所以看看这个使用windbg+DebugCRT堆的http://cfc.kizzx2.com/index.php/detecting-memory-leaks-with-windbg-the-modern-and-free-way/是可以的!
https://stackoverflow.com/questions/10730614
复制相似问题