昨天做的一个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。内存泄露没了。