1

为格式不佳道歉-在我的手机上写这个。

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

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

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

4

3 回答 3

1

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

此处修改问题: 混合模式 C++/CLI 应用程序未正确关闭 CLR

于 2012-04-19T00:18:00.047 回答
0

尝试找到WinMain()构造 CWinApp 的相同函数,并将其放置在AfxDiagnosticInit()那里。

于 2012-04-17T03:09:18.927 回答
0

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

AfxEnableMemoryLeakDump(FALSE);

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

您可以将泄漏物倾倒在更合适的位置_CrtDumpMemoryLeaks();

于 2015-08-27T07:08:54.247 回答