c++ - 如何忽略来自 _CrtDumpMemoryLeaks 的误报内存泄漏?

标签 c++ memory static memory-leaks

似乎只要有静态对象,_CrtDumpMemoryLeaks 就会返回误报,声称它正在泄漏内存。我知道这是因为它们直到 main()(或 WinMain)函数之后才被销毁。但是有什么办法可以避免这种情况吗?我用的是VS2008。

最佳答案

我发现如果你告诉它在程序终止后自动检查内存,它允许所有静态对象都被计算在内。我正在使用 log4cxx 和 boost 在静态 block 中进行大量分配,这修复了我的“误报”...

在 main() 开头的某处添加以下行,而不是调用 _CrtDumpMemoryLeaks:

_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );

有关用法和宏的更多详细信息,请参阅 MSDN 文章:

http://msdn.microsoft.com/en-us/library/5at7yxcs(v=vs.71).aspx

关于c++ - 如何忽略来自 _CrtDumpMemoryLeaks 的误报内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2323458/

相关文章:

c++ - 不理解一些编程模式

传递给函数的 Python 自由字符串

c - 当 block 被 free() 从堆中释放时会发生什么?

c++ - 静态成员变量的返回引用c++

java - 再次调用静态初始化器

c++ - 为什么将值传递给模板而不是在函数调用中提供它?

c++ - Qt std::runtime_error 等效项

c++ - 存储增量下载数据的最佳方式是什么?

r - 逻辑变量的内存大小

cocoa - 如何在 Cocoa 中进行静态初始化