我在CRTDBG中检测到很多内存泄漏,但是发现它们很难跟踪,因此安装了Visual Leak Detection。这表明泄漏的数量是一致的,我可以追溯到没有虚拟析构函数的抽象类。我已解决此问题,并且VLD现在在我的应用程序中未显示任何内存泄漏,但是CRTDBG仍然存在,并且始终显示大约100个左右的泄漏。
可以使用C++ 11信任这两种工具吗?我大量使用唯一的指针,没有它们就几乎不制作任何新对象,因此无法理解泄漏的来源。
最佳答案
如果您在main()
中的堆栈上有一些全局对象或某些对象,则在main()
退出之前它们不会被销毁。
如果这些对象进行了动态内存分配,并且您在_CrtDumpMemoryLeaks()
的最后调用了main()
,您仍然会看到该内存为“泄漏”。