程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> CBRUSH釋放、CreateSolidBrush的內存釋放與內存洩露問題及其解決方法

CBRUSH釋放、CreateSolidBrush的內存釋放與內存洩露問題及其解決方法

編輯:.NET實例教程

今天編了一個小程序,內存消耗卻很大,隨著時間用的越來越久,內存消耗越來越大。研究了一下,原來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;


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved