前段时间在解决代码的内存泄露问题,解决了部分内存泄露问题。
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分离,并调