为什么它"not necessary to free the resources loaded using LoadResource" 32 位 Windows 应用程序?



在FreeResource函数中-Microsoft文档:

[此函数已过时,仅支持与16位Windows向后兼容。对于32位Windows应用程序,没有必要释放使用LoadResource加载的资源。如果在32位或64位Windows系统上使用,此函数将返回FALSE。]

为什么?是因为内存太大吗?

专用资源特定功能,如LoadBitmap()"后处理";将实际资源转换为可用的GDI对象,该对象消耗额外的内存和系统范围的GDI表中的插槽(限制为64K句柄(。因此,一旦用HBITMAP完成,就必须调用DeleteObject(),以便释放相关联的资源。

不同于LoadBitmap()(也不同于16位Windows(,LoadResource()在Win32中不分配任何额外的资源,而是";点";到已加载模块的存储器映射映像中的资源。因此,FreeResource()在Win32中没有任何需要清理的内容。

引用Raymond Chen的《FreeResource和Destroyer AcceleratorTable:之间的区别》

在16位Windows中,加载资源需要分配一块内存,然后从磁盘映像中填充该内存块。在Win32中,资源被映射到地址空间中,作为映像的一部分;没有内存分配,也没有显式加载。

最新更新