【发布时间】:2016-02-22 17:04:48
【问题描述】:
我们遇到 GDI 资源泄漏,有时会导致“Win32Exception 没有足够的存储空间来处理此命令”(related question)。
我们的应用程序由 Word Addin 和 C# 应用程序组成。 Word 插件中的泄漏是否可以从 C# 应用程序中删除资源?在一些无关的插件问题后,我们已经看到应用程序崩溃。
换句话说,GDI 资源是按进程独占分配还是以某种方式共享?
【问题讨论】:
-
是的,GDI 对象是从桌面堆分配的,该桌面堆由在该桌面上运行的所有进程共享。由于 appcompat 的原因,交互式桌面上的大小限制为 64K 对象。但是你不能只用一个泄漏的坏进程来耗尽它,它需要几个。如此怀疑,你找到了真正的原因。否则在任务管理器中很容易看到,使用视图 > 选择列添加“GDI 对象”列。
标签: c# .net gdi+ gdi resource-leak