我的MFC应用程序中报告了虚假内存泄漏

时间:2012-04-17 03:01:51

标签: c++ visual-c++ mfc

抱歉格式不佳 - 在手机上写这个。

退出我的MFC(也是cli)应用程序时,我收到许多虚假内存泄漏。

经过调查,MFC AfxDiagnosticInit函数被过早调用,因此在调用CWinApp析构函数之前发生内存泄漏转储,导致许多误报内存泄漏

如何确保更快地调用AfxDiagnosticInit,以便在泄漏转储开始之前调用我的静态变量析构函数(例如CMyApp)?

3 个答案:

答案 0 :(得分:1)

只是跟进:我发现了真正的问题,这与它是混合模式C ++ / CLI应用程序这一事实有关,并且CLI不允许CRT关闭。

此处修改了问题: Mixed-mode C++/CLI app not shutting down CLR correctly

答案 1 :(得分:0)

尝试查找WinMain(),构建CWinApp的功能相同,并在其中放置AfxDiagnosticInit()

答案 2 :(得分:0)

作为替代解决方案,您还可以使用以下命令禁用MFC的自动内存泄漏转储:

AfxEnableMemoryLeakDump(FALSE);

自Visual Studio 2010起支持此功能。有关文档,请参阅here

您可以使用_CrtDumpMemoryLeaks();

将泄漏转移到更合适的位置