c++ - 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
并在使用新字体后重新设置?
解决方案
是的,两个创建的字体对象被泄露了。
请注意,MS 示例代码在错误处理和对象清理方面通常很差(它们通常专注于演示示例的核心内容 - 这里是 CreateFont 调用 - 同时忽略或最小化这些问题)。
推荐阅读
- python - 我似乎无法让我的 openpyxl 代码工作
- xml - 当结构正确时,结构的 SOAP 错误消息
- java - Jersey 2 和 Jetty:检测到未知的 HK2 故障
- html - 为什么 Reactjs 会移除 inline-block 元素之间的水平空间?
- c# - 在 switch 中设置的委托不能在 switch 之外使用
- java - 带有可选结尾逗号的正则表达式模式匹配
- mysql - 使用全文索引和其他带索引的列优化 mysql 查询
- sql - 如何在 SQL 中有效地对一组列进行转置和求和?
- c# - 如何从 OnTextChanged 事件中获取 GridViewEventArgs?
- google-maps - 在颤振中实现短信“分享我的当前位置”