首页 > 解决方案 > CreateFont、DeleteObject 和 GDI 句柄/内存泄漏

问题描述

我正在查看API的此示例https://docs.microsoft.com/en-us/windows/win32/api/wingdi/nf-wingdi-createfontaCreateFont

它清楚地表明,在创建字体后,CreateFont应通过DeleteObject调用将其销毁。DeleteObject(hFont); 只调用一次。CreateFont被调用 3 次。这是 MS 文档中的错误吗?不应该通过检索旧字体来存储旧字体SelectObject并在使用新字体后重新设置?

标签: c++winapigdi

解决方案


是的,两个创建的字体对象被泄露了。

请注意,MS 示例代码在错误处理和对象清理方面通常很差(它们通常专注于演示示例的核心内容 - 这里是 CreateFont 调用 - 同时忽略或最小化这些问题)。


推荐阅读