我用 CRTDBG 检测到一堆内存泄漏,但发现它们很难追踪,所以安装了 Visual Leak Detection。这显示了一致数量的泄漏,我将其追溯到没有虚拟析构函数的抽象类。我修复了这个问题,VLD 现在在我的应用程序中没有显示内存泄漏,但是 CRTDBG 仍然存在,并且一直显示大约 100 次左右的泄漏。
C++11 能否信任这些工具中的任何一个?我大量使用唯一指针,没有它们几乎没有创建任何新对象,所以无法理解泄漏的来源。
最佳答案
如果在 main()
中的堆栈上有一些全局对象或其他东西,它们不会在 main()
退出之前被销毁。
如果这些对象执行动态内存分配并且您在 main()
的最后调用 _CrtDumpMemoryLeaks()
,您仍然会看到该内存“泄漏”。 "
关于c++ - VS2012、C++11 和内存泄漏检测(VLD 与 CRTDBG),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14548135/