OnClose与OnDestroy引发的内存泄露问题

今天在调一个内存泄露的问题,把代码找遍也未发现任何泄露的踪迹吐舌头。最后,突然发现,使用单文档的小'X‘号关闭未发生内存泄露,但直接关闭整个工程,oh my god!泄露来了。

说明环境:xp+vs2008+MFC MultiDocument

  • who take the cake?

然后在程序退出的各大关口设置断点。OnClose函数是必须要看的,发现关闭一个文档时,正常调用了OnClose函数,但是直接关闭整个工程时,并没有调用单个文档的OnClose函数。

额!

MFC中的特性吧。那么当需要退出时,释放空间怎么办?析构函数肯定是能进去的,但是总不能在析构函数中去释放资源吧(为什么不了?)。我又重载了OnDestroy函数,设置断点查看。

  • “幸福来敲门了”

关闭单个文档和关闭整个工程都会进入OnDestroy函数。

那么,下次一定要记住MFC的这个特性,程序关闭时是一定会调用OnDestroy消息,OnClose则不一定。从词语意思上也了解出来,OnClose是比较温柔的,但是OnDestroy则暴力了许多。那么直接关闭整个工程时,没有一个个去关闭其中的单个文档,确实很暴力。也难怪会只有OnDestroy消息。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值