昨天发现自己的游戏运行时内存一直缓慢增长,但是结束的时候检查不到内存泄漏。
今天又调试了5个小时,发现是在OnPaint()里面GetDC()和ReleaseDC()造成的。
但是同样的使用情况,在xyBackPaint里面又没有发现过类似问题。
后来查了下百度,发现这是MFC的一个BUG并且一直未修正,ReleaseDC()时只释放了GDI对象,未释放内存。
具体参见:http://support.microsoft.com/kb/819635/zh-cn
解决方法就是用win32API替换掉MFC方法。
作者在游戏中遇到内存持续增长的问题,在排查后发现是MFC中OnPaint()函数调用GetDC()和ReleaseDC()导致的内存未完全释放。此问题为MFC已知BUG,解决方案是采用Win32 API替代MFC方法。
3万+

被折叠的 条评论
为什么被折叠?



