MFC程序GDI耗尽,windows无法解决?
用VC新建一个多文档视图的工程,只添加一段反复新建文档和关闭文档的代码,运行一段时间后GDI就会耗尽,仔细观察每次新打开一个视图,GDI就会增加,而且关闭后GDI没有减少。这样的话意味着MFC程序中打开的视图数目是有限制的,但是有的程序一跑就是几天几夜,而且需要反复打开关闭视图,时间长了就会显示全乱了。
请教各位高手,有没有好的优化办法?
------解决方案--------------------优化?
你应该使用结束后释放gdi的资源。
------解决方案--------------------如上 不是优化问题 是你释放没处理好
------解决方案--------------------你的GDI资源没有释放,你需要检查一下,及时的release。或者可以把创建的GDI资源,比如画笔画刷之类的尽量放到构造函数之类的只运行一次的地方,而不是在ondraw,onCTLcolor之类的函数里,然后在析构函数释放画笔画刷
------解决方案--------------------应该就是GDI资源没有释放导致的问题,我以前也遇到过类似的问题
------解决方案--------------------绘图资源的管理很重要,很多对象创建了,都需要销毁操作,
具体你可以查阅一下MSDN,如果没有太多的经验,一般在你用到的某个创建/获取资源的函数(如果使用完毕需要销毁),在MSDN的描述都会有提醒,配对。。
除了资源管理,如果跑几天就用尽资源,还建议检查一下你的分配机制,
对于常用的尽量减少分配次数,或者使用语言技巧(如static 一次来处理等等)。
图像的更新机制等最好有内存计算,并优化机制。。。。
当然,这些都看需求了,
------解决方案--------------------感觉还是哪里有资源泄漏,比如在哪里没有release dc操作,我以前有个程序就是运行很长时间后系统出错,经查就是没有releasedc,导致占用了大量dc的操作句柄,最后系统出错。