有没有办法在visual studio中隐藏正常内存检测的安全内存泄漏?
我正在使用此调试标志检测内存泄漏:
_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
我花了很多时间来研究如何在C ++项目中嵌入Boost.Python。它工作得很好,而且我对我的灵活性印象深刻。所有努力工作终于得到了回报。也就是说,直到我的灵魂破碎实现,Python集成有内存泄漏。它似乎是一个已知的问题,并且不会被修复Does the Python 3 interpreter leak memory when embedded?。由于内存泄漏保持不变,他们说可以安全地忽略它。但是,在Visual Studio中使用泄漏检测对我来说是一个巨大的帮助,每次运行程序时都会出现误报,这将使检测真正的内存泄漏变得更加困难。我不想放弃,但我不想放弃蟒蛇。
我有什么方法可以隐藏内存泄漏吗?将代码包装在静态库,DLL,单独的进程,什么?!如果我听起来绝望,因为它非常接近我的感受。 ;)
答案 0 :(得分:3)
_CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) & ~_CRTDBG_ALLOC_MEM_DF);
// allocations here are ignored by memory leaks tracker
_CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_ALLOC_MEM_DF);
// memory leaks tracking continues
恢复内存泄漏跟踪到其原始状态的通用版本:
int flags = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
_CrtSetDbgFlag(flags & ~_CRTDBG_ALLOC_MEM_DF);
// allocations here are ignored by memory leaks tracker
_CrtSetDbgFlag(flags);
// memory leaks tracking returns to its original state