Fork me on GitHub

记一次内存泄漏

记一次内存泄漏

 最近在工作上遇到软件崩溃的问题,基于mfc的一个pc软件。苦苦调试了几天,输出日志,查看堆栈都没什么结果,只知道是内存泄漏引起的。
 昨天国庆假期,迫于无聊就去公司再次查看这个问题,使用windbg分析得知是字体资源太多导致,认真review代码了,发现问题原来是出在CreateFontIndirect这个函数上,软件中使用到ListBox需要针对不同类型的ListBox使用不同的字体,在类中声明了一个CFont的字体对象,当需要使用不同的字体时,自己直接又一次调用了CreateFontIndirect,并没有调用DeleteObject,所以导致了内存泄漏。

 因为自己并不是很熟悉Gdi+,所以才有这个问题发生,原来vc中的任何资源,字体、画笔、画刷、DC等都不能在同一个对象上二次创建,如果需要二次创建,必须将前次的销毁才行。特此记录一下。

您的赞赏是对我最大的支持,谢谢!