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

时间:2015-09-22 09:15:36

标签: c++ winapi gdi

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

但如果我们不删除通过CreatePen函数创建的GDI笔会发生什么?

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:0)

  

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

然后将不释放与资源关联的资源。 你得到了内存泄漏。