GDI泄露,程序发布之前的审核
2016-10-18 11:21
162 查看
转载地址:http://lmx18.blog.163.com/blog/static/43493679201166115036889/
http://blog.csdn.net/fion45/article/details/9967753
之前有一个项目因为那时对C++还不太熟悉,没有太多经验,造成了内存泄漏、线程同步、GDI对象泄漏等新手常见的问题,所以这个程序会不定时地莫名其妙地死掉,后来通过用Visual Leak Detector小心翼翼地解决了内存泄漏的问题,接着系统就稳定了很多,而且也重新看了多线程那部分,加了多个锁,也总算解决了线程同步的问题。然而系统还是隔一段时间死掉,后来在任务管理器里发现其”GDI对象“只增不减,原来还有GDI对象泄漏啊,这个好像在网上都找不到什么软件进行检测,后来查了半日资料,发现原来创建的GDI对象都必须调用相应的方法进行销毁。如下表
这里还有一个问题需要注意,就是设备DC需要调用SelectObject方法来选取不同的GDI对象,当选择GDI对象时必须用一个指针记录替换出来的对象,当要结束绘图的时候再用该DC调用SelectObject方法把替换出来的对象放回去,这时调用以上的销毁方法才能成功,要不也是不能清除GDI对象的,切记。
这些问题改了我不少时间啊,以后写程序的时候一定不要再像新手一样,写得这么随便了。
http://blog.csdn.net/fion45/article/details/9967753
之前有一个项目因为那时对C++还不太熟悉,没有太多经验,造成了内存泄漏、线程同步、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 |
这些问题改了我不少时间啊,以后写程序的时候一定不要再像新手一样,写得这么随便了。
相关文章推荐
- .Net程序开发中一个较为隐蔽的GDI泄露探析
- 小程序代码上传-审核-发布,体验者权限设置
- .Net程序开发中一个较为隐蔽的GDI泄露探析
- 微信小程序(2)-小程序信息完善以及开发前准备,代码审核与发布
- [转载]小程序审核发布经验
- phpwind管理权限泄露漏洞利用程序发布
- 小程序审核发布经验
- 支付宝小程序审核与发布
- .Net程序开发中一个较为隐蔽的GDI泄露探析
- 小程序代码发布审核未通过,文娱-资讯
- 在Tomcat里发布程序
- FreeXploiT-个人程序/文章发布时间
- 代码发布!两个小函数让你的ASP程序对SQL注入免疫!
- 在oracle中发布java程序
- VC下发布的Release版程序的异常捕捉
- Delphi2005学习笔记6——Delphi.Net程序的发布
- JScud语法加亮程序初次发布
- 菜鸟遇到程序发布问题
- 微软发布官方提升关机速度程序
- 微软发布官方提升关机速度程序