DrawFrameControl中的GDI资源泄漏

时间:2008-10-09 10:51:57

标签: winapi gdi bounds-checker

DrawFrameControl()似乎创建了Font和Brush对象,将它们选择为dc,并且不删除它们。 (根据BoundsChecker的消息)。有没有人面对这样的事情?

1 个答案:

答案 0 :(得分:2)

我在各种OS / CRT Dll中经历过相同的经历。 其中一种模式是

  • 我得到一个窗口的DC(GetDC或GetWindowDC)以执行我喜欢的任何操作(即创建兼容的内存DC)。
  • 我完成DC之后就释放了DC,即使我没有在其中选择任何GDI对象,我有时会得到一个Boundschecher警告,指出设备上下文中仍然存在选定的对象。

由于这些警告肯定不在我的代码中,我建议你带上一粒盐。 一般来说,我所做的是清理任何引用我的代码的BC警告。

偏离主题:BC抛出了很多警告,开发人员无法修复他的代码。在stl中,你会有无数的警告,但大多数是“比较不相关的指针”。这并不意味着BC错误地抛弃它们。在常规应用程序中“比较不相关的指针”可能是一场灾难,但我认为编写stl实现的人知道他们在做什么,并且可能已经检查了这些案例。