使用多个dll的虚假内存泄露

    技术2025-12-21  6

    昨天做的一个demo,在对话框内加入flash控件。结果退出时报内存泄露。大概如下:

    a CDynLinkLibrary object at $01F5A130, 64 bytes long

    还有很多一些信息,省略。

    搜索了一下,原因是mfc中包含多个dll导致的。

    msdn解释如下:

    在同一进程中加载多个版本的 MFC DLL 时,将报告这些内存泄漏。由于 MFC 扩展 (AFXDLL) dll 需要完全相同的 MFC DLL,作为调用应用程序,使用 MFC 的规则 (USRDLL) dll 或 ActiveX 控件 (OCX),使用共享的 MFC 版本时,可以只出现此问题。 最常见的情况下混合 ANSI (MFC4xd.DLL) 和 MFC 的 UNICODE (MFC4xxUd.DLL) 版本在同一进程中。这也会发生时混合使用 MFC42d.DLL 和 MFC40d.DLL。

    详见:

    http://support.microsoft.com/kb/167929/zh-cn。

    将工程属性改为“使用多字节字符集”,重新生成,运行。ok。内存泄露没了。

     

    最新回复(0)