DrawFrameControl 中的 GDI 资源泄漏
Posted
技术标签:
【中文标题】DrawFrameControl 中的 GDI 资源泄漏【英文标题】:GDI resource leak in DrawFrameControl 【发布时间】:2010-09-16 05:58:46 【问题描述】:似乎 DrawFrameControl() 创建了 Font 和 Brush 对象,将它们选择到 dc 中,并且没有删除它们。 (根据 BoundsChecker 消息)。有人遇到过这种情况吗?
【问题讨论】:
【参考方案1】:我在各种 OS/CRT Dll 中都经历过同样的事情。 其中一种模式是
我获得了窗口的 DC(GetDC 或 GetWindowDC),以便执行我喜欢的任何操作(即创建兼容的内存 DC)。 我在完成 DC 后释放它,即使我没有在其中选择任何 GDI 对象,有时我也会收到 Boundschecher 警告,指出设备上下文中仍有选定的对象。由于这些警告绝对不在我的代码中,因此我建议对它们持保留态度。 通常我所做的是清除所有引用我的代码的 BC 警告。
题外话:BC 会抛出许多开发人员无法在其代码中修复的警告。在 stl 中,您将收到无数警告,但其中大多数是“比较不相关的指针”。这并不意味着 BC 错误地扔了它们。在常规应用程序中“比较不相关的指针”可能是一场灾难,但我认为编写 stl 实现的人知道他们在做什么,并且可能已经检查过这些案例。
【讨论】:
不幸的是,在我的情况下肯定存在泄漏,因为 GDI 对象的数量在几秒钟内增加到数千,然后 GDI 崩溃。以上是关于DrawFrameControl 中的 GDI 资源泄漏的主要内容,如果未能解决你的问题,请参考以下文章