MFC误报内存泄露的修复
在debug状态退出程序的时候,VS会在输出窗口列出可能的内存泄露的地方。
MFC中使用DEBUG_NEW能够更方便的定位泄露的地点。但假如MFC的dll释放“”过早“”,DEBUG_NEW记录的内存分配信息就会不灵了。
那什么情况下导致MFC的DLL过早释放呢?
有这样一种情况:以#pragma comment(lib, _LIBNAME_)方式link一个依赖MFC的lib。
比如在使用BCGControlbar界面库的时候,默认是使用这样的方式。
如何避免MFC的DLL过早释放?
在Additional Dependencies里面把mfc100ud.lib放在第一个的位置。
这样就符合先加载后释放的规则。
另外#pragma comment(lib, _LIBNAME_)虽然减少了设置project的lib依赖的步骤,但最好还是使用显示的link依赖,起码我们会更清楚dll的加载顺序。