【问题标题】:False memory leaks reported in my MFC app在我的 MFC 应用程序中报告了错误的内存泄漏
【发布时间】:2015-08-27 15:24:01
【问题描述】:

抱歉,格式不佳 - 在我的手机上写下此内容。

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

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

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

【问题讨论】:

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      AfxEnableMemoryLeakDump(FALSE);
      

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

      您可以使用_CrtDumpMemoryLeaks();将泄漏转储到更合适的位置

      【讨论】:

        猜你喜欢
        • 2018-01-17
        • 1970-01-01
        • 2013-10-16
        • 1970-01-01
        • 1970-01-01
        • 2012-05-05
        • 2012-12-10
        相关资源
        最近更新 更多