CBRUSH释放、CreateSolidBrush的内存释放与内存泄露问题及其解决方法

今天编了一个小程序,内存消耗却很大,随着时间用的越来越久,内存消耗越来越大。研究了一下,原来CBRUSH对象没有释放。

原来程序如下:

HBRUSH CPORTSetting::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{

HBRUSH hbr ;
 COLORREF backColor =(COLORREF)   GetSysColor(COLOR_CAPTIONTEXT);  //office 2003背景色 
  //return CreateSolidBrush(backColor);            //创建背景刷子 

 return hbr;

只需要将hbr声明为成员变量,在CPORTSetting的构造函数中初始化,在析构函数中使用DeleteObject释放hbr对象即可。

修改后代码如下:

CPORTSetting::CPORTSetting()
{
 COLORREF backColor =(COLORREF)   GetSysColor(COLOR_CAPTIONTEXT);  //office 2003背景
 hbr=::CreateSolidBrush(backColor);            //创建背景刷子 }

///////////////////////////////////////////////////////////////////////////

CPORTSetting::~CPORTSetting()
{
 DeleteObject(hbr);
}

//////////////////////////////////////////////////////////////////////

HBRUSH CPORTSetting::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{

 

 return hbr;

你可能感兴趣的:(编程)