c++ - VS2012、C++11 和内存泄漏检测(VLD 与 CRTDBG)

标签 c++ c++11 visual-studio-2012 memory-leaks

我用 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/

相关文章:

c++ - 如何加快大字符串的解析速度?

visual-studio - 如何修复 win 8 认证报告中的 Debug App Check

c++ - 在 C++ 中重载函数

c++ - 需要帮助调试字符输入

c++ - 多次打开/关闭共享库后静态销毁顺序错误

c++ - "Vector iterator not incrementable"错误

c++ - 尝试用 C++ 编写一个只读取第一列数据并跳到下一行的类

c++ - 为什么专用模板函数不能同时接受类型及其常量版本?

.net - 如何在 Windows Phone 8 项目中以 Windows Phone 7.5 为目标

c - Visual Studio 2012 中的 #include <math.h>