如果我们不使用DeleteObject会发生什么

For*_*eza -1 c++ winapi gdi

我们必须使用该DeleteObject函数来删除GDI对象.

但是如果我们不删除通过该CreatePen功能创建的GDI笔会发生什么?

Dai*_*Dai 5

  1. 打开任务管理器
  2. 转到"详细信息"选项卡(或Windows 7及更早版本中的"进程"选项卡).
  3. 显示"GDI对象"列
  4. 在不删除GDI对象的情况下运行您的进程,最好是在紧密循环中
  5. 观察您的过程'GDI对象计数将不断增加
  6. 最终你会达到GDI对象限制.每个进程限制(Windows 8.1中为10,000)或GDI对象限制的会话限制为65,535
  7. 然后你会开始看到奇怪的视觉假象和故障,因为事情没有正确绘制,不只是在你的过程中,而是其他进程也使用GDI(特别是Internet Explorer 8或更早版本,特别是GDI重)
  8. 假设您的进程没有崩溃,您将看到清理GDI对象的原因:)