GDI对象及其销毁方法
来源:互联网 发布:nginx部署多个网站 编辑:程序博客网 时间:2024/06/05 15:45
项目中造成了内存泄漏、线程同步、GDI对象泄漏等新手常见的问题,所以这个程序会不定时地莫名其妙地死掉,后来通过用Visual Leak Detector小心翼翼地解决了内存泄漏的问题,接着系统就稳定了很多,而且也重新看了多线程那部分,加了多个锁,也总算解决了线程同步的问题。然而系统还是隔一段时间死掉,后来在任务管理器里发现其”GDI对象“只增不减,原来还有GDI对象泄漏啊,这个好像在网上都找不到什么软件进行检测,后来查了半日资料,发现原来创建的GDI对象都必须调用相应的方法进行销毁。如下表
GDI对象
产生方法
销毁方法
位图(HBITMAP)
CreateBitmap,CreateBitmapIndirect,
CreateCompatibleBitmap,CreateDIBitmap,
CreateDIBSection,CreateDiscardableBitmap
DeleteObject
画刷(HBRUSH)
CreateBrushIndirect,CreateDIBPatternBrush,
CreateDIBPatternBrushPt,CreateHatchBrush,
CreatePatternBrush,CreateSolidBrush
DeleteObject
设备上下文(HDC)
CreateDC
DeleteDC,ReleaseDC
字体(HFONT)
CreateFont,CreateFontIndirect
DeleteObject
内存DC(HDC)
CreateCompatibleDC
DeleteDC
调色板(HPALETTE)
CreatePalette
DeleteObject
画笔(HPEN)
CreatePen,CreatePenIndirect
DeleteObject
区域(HRGN)
CombineRgn,CreateEllipticRgn,
CreateEllipticRgnIndirect,CreatePolygonRgn,
CreatePolyPolygonRgn,CreateRectRgn,
CreateRectRgnIndirect,CreateRoundRectRgn,
DeleteObject
这里还有一个问题需要注意,就是设备DC需要调用SelectObject方法来选取不同的GDI对象,当选择GDI对象时必须用一个指针记录替换出来的对象,当要结束绘图的时候再用该DC调用SelectObject方法把替换出来的对象放回去,这时调用以上的销毁方法才能成功,要不也是不能清除GDI对象的,切记。
- GDI对象及其销毁方法
- Java对象销毁和finalize方法
- XMLHTTP 对象及其方法
- XMLHTTP对象及其方法
- XMLHTTP 对象及其方法
- XMLHTTP对象及其方法
- XMLHTTP 对象及其方法
- XmlHttp对象及其方法
- XMLHTTP对象及其方法
- XMLHTTP对象及其方法
- XMLHTTP 对象及其方法
- XMLHTTP对象及其方法
- XMLHTTP对象及其方法
- XMLHTTP对象及其方法
- GDI+ 绘制倾斜对象的方法!
- Python 对象特殊方法:(一)对象创建与销毁
- 面向对象 析构方法 销毁对象时自动触发
- GDI对象
- android stdio helloworld 报错,gradle版本太低
- C/C++输入输出
- 享元模式
- “盛大游戏杯”第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛
- linux系统命令学习(一)--- ps与kill
- GDI对象及其销毁方法
- 学习pr2
- SpringMVC配置返回JSON数据格式
- 话说C++中的左值、纯右值、将亡值
- 很少有人能说清楚listen函数的blacklog的含义, 那就让linux来说说吧!------笔试考过
- 算法题:复杂链表的复制
- poj1469 COURSES【二分图匹配】
- 关于树形权限关系
- 支持向量机(SVM)