我在函数中有一个简单的try catch块:
TRY
{
; // Doesn't matter what is in the try block, I got memory leak just for a simple semicolon!
}
CATCH( COleException, e )
{
return e->m_sc;
}
END_CATCH
此代码始终在新线程中运行(使用_beginthread),线程可能会多次创建,但线程的生命周期很短。
使用MFC TRY / CATCH宏会导致大量内存泄漏。删除try catch会立即修复泄漏。
使用vs 2015诊断工具我比较了内存快照,发现泄漏类型是: _AFX_THREAD_STATE和CThreadData
使用try / catch mfc宏进行此泄漏的原因是什么?