我可以泄漏什么未命名的GDI资源

时间:2016-12-29 15:20:27

标签: winapi gdi resource-leak

我对我的应用程序进行了一夜间压力测试,今天早上软件因Windows错误而崩溃。

发生错误是因为该进程明显超出了GDI句柄:

Process Explorer

enter image description here

任务管理器

enter image description here

接下来要弄清楚我正在泄漏哪种GDI资源(例如笔,画笔,位图,字体,区域,DC)。为此,我转向NirSoftGDIView

enter image description here

  • 笔: 0
  • Ext Pen :0
  • :4
  • 位图:35
  • 字体:19
  • 调色板:1
  • 地区:3
  • DC :11
  • Metafile DC :0
  • 增强型图元文件DC :0
  • 其他GDI :0
  • GDI总计:0
  • 所有GDI 10,000

GDI可以处理什么,不是任何已知的GDI类型?

1 个答案:

答案 0 :(得分:6)

答案 GDI HFONT处理。

这是一个Windows 8问题,GDIView无法显示字体句柄。

我用挂钩拦截每一个电话:

  • 的CreateFont
  • DestroyFont

并记录每个句柄的创建,以及它允许​​的堆栈跟踪。最后,我可以报告任何取消删除字体。