花了两天的功夫终于发现系统资源泄漏的原因,居然是因为画笔画刷使用后未释放造成。
用的是EVC编写MFC应用程序,程序中有一段绘图程序,因为不断刷新,频繁的使用画笔画刷,这样程序运行一天一夜左右就假死了。
举个例子说明一下资源对象的使用与释放:
CDC *dc = new CClientDC(this);//得到绘图环境
Cpen gridPen;
gridPen.CreatePen(PS_DASH, 1, RGB(0,0,255));//创建一个蓝色画笔
Cpen *penPoint = dc->SelectObject(&gridPen);//选中画笔
CBrush gridBrush( RGB(0,0,255));//创建一个蓝色画刷
CBrush *brushPoint = dc->SelectObject(&gridBrush);//选中画刷
CRect rect;
GetClientRect(&rect);
dc->Rectangle(rect);//绘制矩形
dc->SelectObject(penPoint);//恢复绘图对象
dc->SelectObject(brushPoint);//
gridPen.DeleteObject();//释放画笔
gridBursh.DeleteObject();//释放画刷
if(dc != NULL)//释放绘图环境
{
delete dc;
}
其他绘图类资源HBRUSH,HBITMAP等使用后也一定要记得释放,不然短时间运行可能发现不了什么问题,不过时间久了,当
资源再次创建不成功时,系统就会变得莫名奇妙了。