gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 02:40:19 31 4
gpt4 key购买 nike

FreeResource function - Microsoft Docs :

[This function is obsolete and is only supported for backward compatibility with 16-bit Windows. For 32-bit Windows applications, it is not necessary to free the resources loaded using LoadResource. If used on 32 or 64-bit Windows systems, this function will return FALSE.]

这是为什么呢?是不是内存大的原因?

最佳答案

LoadBitmap()这样的专门的资源特定函数将实际资源“后处理”为可用的GDI对象,这会消耗额外的内存和系统范围GDI表中的一个槽( limited to 64K handles)。因此,在完成 HBITMAP 后,需要调用 DeleteObject() 以释放关联的资源。

LoadBitmap() 不同(也与 16 位 Windows 不同),LoadResource() 不会在 Win32 中分配任何其他资源,而是“指向”该资源在已加载模块的内存映射镜像中。因此,Win32 中的 FreeResource() 无需清理任何内容。

引自 Raymond Chen 的 What's the difference between FreeResource and, say, DestroyAcceleratorTable :

In 16-bit Windows, loading a resource entailed allocating a chunk of memory, then filling that memory block from the disk image. In Win32, resources are mapped into the address space as part of the image; there is no memory allocation and no explicit loading.

关于winapi - 为什么 32 位 Windows 应用程序的值为 "not necessary to free the resources loaded using LoadResource"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63735320/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com