标签: c++ visual-c++ memory-leaks
我的一个项目是通过_CrtSetDbgFlag等利用微软提供的内存泄漏检查程序。这样工作正常,但我现在想要使用泄漏少量内存的第三方软件包。我没有特别需要修复泄漏,但输出很烦人,因为它会掩盖可能引入的“真正”泄漏。
_CrtSetDbgFlag
如何禁用特定文件或项目的泄漏检查,但是为其他文件或项目保留?我的理解是它在调试模式下通过一些#define启用 - 我有点小提琴,但没有设法找到我可以#undef关闭它的东西。
#define
#undef
答案 0 :(得分:4)
在第一个_CRTDBG_CHECK_DEFAULT_DF指令之前,您可以使用_CrtSetDbgFlag()和宏0(等于new)来废除相关文件中的堆分配检查器。您不希望检查内存泄漏并在new指令后立即响应的文件。请参阅MSDN here。
_CRTDBG_CHECK_DEFAULT_DF
0
new
仅适用于 MFC项目的另一种方式: 我个人使用DEBUG_NEW宏来检测内存泄漏。在我的项目的每个文件中,我添加了宏。如果不将宏放在文件中,则不会在其中找到内存泄漏,只能在其他内容中找到。宏被解释为here。
DEBUG_NEW