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