一种MFC误报动态库中内存泄露的处理方法

本文详细解析了MFC内存泄露误报问题,特别是当DLL工程中存在全局变量导致的问题。通过分析DLL卸载顺序,提出了解决方案:重新配置调用的DLL使其依赖于MFC,或在程序退出前适当告知动态库进行deInit()操作。同时,还提供了一个替代方法,即在主程序中显式加载和释放动态库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于MFC误报动态库中的内存泄露,在这篇文章中有比较详细的解释:关于DLL工程中存在全局变量可能导致MFC内存泄露误报的原因分析及解决办法。认为这种原因是因为MFC的dll早于调用的dll卸载,在MFC的dll泄露时会打印出当前尚未释放的内存,认为这些内存泄露,但事实上当后来真正卸载调用动态库时是正确做了内存清理的。因此文章中认为这个问题是隐式的动态库卸载顺序造成的解决办法是重新配置调用的dll,让其依赖于MFC,这样在卸载时会先卸载调用dll,再卸载MFC dll,这样就不会误报。


针对我现在的实际情况,动态库确实也不需要修改为依赖于MFC,动态库中的对象是单例模式,那比较好的方式是在程序退出前以适当的方式告诉动态库进行一次deInit()就好了。


另外还有一个办法就是在主程序中显式加载和释放动态库。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值