内存泄露解决记录——窗口资源释放

本文详述了解决MFC程序内存泄露中关于窗口资源释放的问题,包括推荐使用DestroyWindow销毁窗口,重载PostNcDestroy进行析构,以及窗口对象与句柄的释放与分离。同时介绍了HWND的概念、引用计数的重要性以及DestroyWindow函数的工作原理。
摘要由CSDN通过智能技术生成

前段时间在解决代码的内存泄露问题,解决了部分内存泄露问题。

 

http://blog.csdn.net/enjolras/archive/2011/01/05/6117628.aspx

这篇文章起到了很好的指引作用,让我对MFC里宏观方面的释放有了一定了解。

总结一下就是:

1、推荐用DestroyWindow来销毁窗口(或者从窗口派生的对象)。

2、重载PostNcDestroy函数通过调用基类的PostNcDestroy函数,如:Cwnd::PostNcDestroy,以及通过delete this来调用析构函数(析构函数中处理窗口类中的需要delete的成员)来自动清理。

 

此外比较重要的几点(需要好好理解的几点):

1、Windows对象(CWnd派生类的对象)既代表一个C++对象(在应用程序的堆中分配)也代表了一个HWND(由窗口管理器在系统资源里分配)。释放分为如下部分,C++对象的释放,HWND的释放,以及C++对象与与之关联的句柄的分离过程(detach)。

 

2、当销毁一个Windows窗口时,最后发送给此窗口的Windows消息是WM_NCDESTROY。CWnd对此消息的缺省处理(CWnd::OnNcDestroy)会将C++对象与HWND分离,并调

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值