MFC误报内存泄露的修复

Posted 力为

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的加载顺序。

以上是关于MFC误报内存泄露的修复的主要内容,如果未能解决你的问题,请参考以下文章

MFC的两个问题

使用mfc CHtmlView内存泄露解决方法

如何修复线性 SVM 的误报率?

python老司机必备-内存泄露分析优化

python老司机必备-内存泄露分析优化

MFC内存泄漏调试