在FreeResource 函数中 - Microsoft Docs:
[此功能已过时,仅支持向后兼容 16 位 Windows。对于 32 位 Windows 应用程序,不需要释放使用 LoadResource 加载的资源。如果在 32 或 64 位 Windows 系统上使用,此函数将返回 FALSE。]
这是为什么?是不是因为内存大?
专门的资源特定功能,例如LoadBitmap()将实际资源“后处理”为可用的 GDI 对象,这会消耗额外的内存和系统范围 GDI 表中的一个插槽(限制为 64K 句柄)。因此,有必要调用DeleteObject()once doneHBITMAP以释放相关资源。
与LoadBitmap()(也不同于 16 位 Windows)不同,LoadResource()在 Win32 中不分配任何额外资源,而是“指向”已加载模块的内存映射映像中的资源。因此,FreeResource()在 Win32 中没有什么可以清理的。
引用 Raymond Chen 的FreeResource 和 DestroyAcceleratorTable 之间的区别是什么:
在 16 位 Windows 中,加载资源需要分配一块内存,然后从磁盘映像填充该内存块。在 Win32 中,资源作为映像的一部分映射到地址空间;没有内存分配,也没有显式加载。
| 归档时间: |
|
| 查看次数: |
106 次 |
| 最近记录: |