关于使用MFC DLL时提示内存泄漏问题
2017-08-22 10:41
597 查看
这两天按照之前的习惯,在开发过程中使用调试模式运行的时候,发现有意料之外的内存泄漏问题。经过不断的核查定位,最终发现是在使用FreeLibrary函数卸载自己写的一个MFC DLL之后报的内存泄漏。然后又Review了好几遍,十分确定自己的代码没有问题!然后注释了一对代码,发现就算只用了LoadLibrary和FreeLibrary也一样会报内存泄漏。然后找了一下调用MFC DLL内存泄漏相关问题的解决方案,什么取消使用共享的DLL中使用MFC,改预定义、依赖库等等,都没有解决问题。最后只能先测试其他功能。。。
后面跑着跑着,突然报mfc140ud.dll内存访问错误,突然灵光一现,想说会不会是字符集编码导致的问题!!然后核对了一下MFC DLL和Exe项目的设置。果然,一个设成多字节字符集,一个设成了unicode字符集。。。然后改了一下字符集设置,果然就不报内存泄漏了
本来字符集应该不影响程序功能的,但是VC中不同字符集所依赖的mfc运行时库是不一样的,估计是运行时库冲突导致的问题吧。因为我其他不使用MFC库的DLL也是使用的多字节字符集,但是并不会导致这个问题。
后面跑着跑着,突然报mfc140ud.dll内存访问错误,突然灵光一现,想说会不会是字符集编码导致的问题!!然后核对了一下MFC DLL和Exe项目的设置。果然,一个设成多字节字符集,一个设成了unicode字符集。。。然后改了一下字符集设置,果然就不报内存泄漏了
本来字符集应该不影响程序功能的,但是VC中不同字符集所依赖的mfc运行时库是不一样的,估计是运行时库冲突导致的问题吧。因为我其他不使用MFC库的DLL也是使用的多字节字符集,但是并不会导致这个问题。
相关文章推荐
- 关于在英创em9161板上使用ADO.net连接远程数据库提示 “无法找到 PInvoke dll"dbnetlib.dll"”问题解决方法
- 关于win32程序如何使用mfcdll的问题.
- 关于VC6创建mfc程序提示缺少头文件或者缺少dll问题的解决
- 关于使用vc++调用matlab生成的dll传递数组的问题
- 仿MFC实现c++按名动态创建对象之续(瘦身以及解决其在dll中使用的问题)
- 关于CList对象在DLL中的使用问题
- 关于用c生成的dll在使用其他供应商的工具创建可执行模块时遇到的一些问题
- 模块切换——MFC的规则DLL中资源使用的问题
- 关于 MFC 绘制 JPG图像 问题 -- 无敌使用fread 获取图像到内存中
- 关于Use MFC in a Shared DLL和Use MFC in a Static Library 转换遇到的问题
- 关于安装IE8之后VS2008使用MFC出现问题的解决方法
- 关于dao得一些使用问题,以备忘....也用来纪念自己解决得第一个内存泄漏问题
- 关于使用IE6下载文件时提示windows无法打开的问题
- 在MFC “共享MFC 规则DLL”中(创建MFC DLL中选第一个),使用MFC对话框注意问题
- 刚才遇到了关于C#使用外部DLL函数上的char*的问题。
- vs2008中使用母版页关于引用*.js的[智能语法提示]和[设置路径]的方法和问题
- 关于WebValidates.dll验证控件在VS2008和VS2010中使用的问题
- 在vc中的MFC regular dll中使用ado的导入问题
- 关于Mfc扩展dll的使用
- 关于使用vc++调用matlab生成的dll传递数组的问题