为格式不佳道歉-在我的手机上写这个。
退出我的 MFC(也是 cli)应用程序时,我收到许多错误的内存泄漏报告。
经调查,MFC AfxDiagnosticInit 函数被调用得太早,因此在调用我的 CWinApp 析构函数之前发生内存泄漏转储,导致许多误报内存泄漏
如何确保更快地调用 AfxDiagnosticInit,以便在泄漏转储开始之前调用我的静态变量析构函数(例如 CMyApp)?
为格式不佳道歉-在我的手机上写这个。
退出我的 MFC(也是 cli)应用程序时,我收到许多错误的内存泄漏报告。
经调查,MFC AfxDiagnosticInit 函数被调用得太早,因此在调用我的 CWinApp 析构函数之前发生内存泄漏转储,导致许多误报内存泄漏
如何确保更快地调用 AfxDiagnosticInit,以便在泄漏转储开始之前调用我的静态变量析构函数(例如 CMyApp)?
只是跟进:我发现了真正的问题,这与它是一个混合模式的 C++/CLI 应用程序有关,并且 CLI 不允许 CRT 关闭。
此处修改问题: 混合模式 C++/CLI 应用程序未正确关闭 CLR
尝试找到WinMain()
构造 CWinApp 的相同函数,并将其放置在AfxDiagnosticInit()
那里。
作为替代解决方案,您还可以使用以下方法禁用 MFC 的自动内存泄漏转储:
AfxEnableMemoryLeakDump(FALSE);
自 Visual Studio 2010 起支持此功能。有关文档,请参见此处。
您可以将泄漏物倾倒在更合适的位置_CrtDumpMemoryLeaks();