GDI对象错误:CBRUSH释放、CreateSolidBrush的内存释放与内存泄露问题及其解决方法
2018-02-23 09:50
931 查看
今天编了一个小程序,内存消耗却很大,随着时间用的越来越久,内存消耗越来越大。研究了一下,原来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;
}
{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;
}
相关文章推荐
- CBRUSH释放、CreateSolidBrush的内存释放与内存泄露问题及其解决方法
- IE浏览器IFrame对象内存不释放问题解决方法
- IE浏览器IFrame对象内存不释放问题解决方法
- 【转】关于Android4.0 emulator-arm.exe-应用程序错误,内存不能为"read"问题解决方法
- linq to sql统一更新方法,直接返回更新的对象(解决更新后再刷新数据错误显示问题)
- 自动资源释放-使用对象管理资源,解决资源泄露问题
- 引入JS文件IE6报语法错误或缺少对象问题的解决方法
- fedora 15 安装opencv2.2时出现undefined reference to `cvCreateCameraCapture_V4L(int)'问题及其解决方法
- Flex内存泄露解决方法和内存释放优化原则
- php出现内存位置访问无效错误问题解决方法
- Android下Activity结束(finish())之后没有释放内存问题的解决方法初探
- ATS插件开发中内存泄露问题的解决方法探讨
- java 内存泄露的原因及解决方法?(对象的根)
- php出现内存位置访问无效错误问题解决方法
- 解决IE浏览器IFrame对象内存不释放问题
- Win7下IE 8内存保护可能导致ActiveX无法安装的问题及其解决方法
- 关于Android4.0 emulator-arm.exe-应用程序错误,内存不能为"read"问题解决方法
- Win7下IE 8内存保护可能导致ActiveX无法安装的问题及其解决方法
- C# Webbrowser使用加载页面多少了内存泄露问题解决方法汇总
- 关于Android4.0 emulator-arm.exe-应用程序错误,内存不能为"read"问题解决方法