如果我加载和卸载用 Delphi 编写的 DLL,它使用
dxForms.pas
(DevExpress)(仅使用,不创建表单),则任务管理器显示的 GDI 句柄会随着每次加载/卸载而增加。我在加载 DLL 之前和卸载之后阅读了 GDI 句柄表并比较了画笔、笔等的列表。没有什么区别。但所有句柄的总和不等于任务管理器显示的 GDI 句柄数。如果我足够频繁地重复加载/卸载,则达到最大 GDI 句柄计数(10000)并且进程终止。
如何解释任务管理器中显示的 GDI 句柄数与 GDI 句柄表列表中的句柄总数之间的差异?当然,我已经阅读了https://www.nirsoft.net/utils/gdi_handles.html的解释。但我不清楚如何创建这些未存储在 GDI 句柄表中的对象。
未释放句柄的数量因DLL而异,但平均约为15个句柄。
我发现了问题:如果卸载dll,cxControls中分配的游标不会被释放。 我已将此事报告给 DevExpress。