globalFree 函数 (winbase.h)

释放指定的全局内存对象并使其句柄失效。

注意 与其他内存管理功能相比,全局函数的开销更大,提供的功能更少。 除非文档指出应使用全局函数,否则新应用程序应使用 函数。 有关详细信息,请参阅 全局和本地函数
 

语法

HGLOBAL GlobalFree(
  [in] _Frees_ptr_opt_ HGLOBAL hMem
);

参数

[in] hMem

全局内存对象的句柄。 此句柄由 GlobalAllocGlobalReAlloc 函数返回。 释放使用 LocalAlloc 分配的内存是不安全的。

返回值

如果函数成功,则返回值为 NULL

如果函数失败,则返回值等于全局内存对象的句柄。 要获得更多的错误信息,请调用 GetLastError。

注解

如果进程在释放内存后检查或修改内存,则可能会发生堆损坏,或者可能会生成访问冲突异常 (EXCEPTION_ACCESS_VIOLATION) 。

GlobalFree 函数将释放锁定的内存对象。 锁定的内存对象的锁计数大于零。 GlobalLock 函数锁定全局内存对象,并将锁计数递增 1。 GlobalUnlock 函数将其解锁,并将锁计数递减 1。 若要获取全局内存对象的锁计数,请使用 GlobalFlags 函数。

如果应用程序在系统的调试版本下运行, GlobalFree 将发出一条消息,告知你正在释放锁定的对象。 如果要调试应用程序, GlobalFree 将在释放锁定的对象之前输入断点。 这样,便可以验证预期行为,然后继续执行。

示例

有关示例,请参阅 GlobalAlloc

要求

   
最低受支持的客户端 Windows XP [桌面应用 | UWP 应用]
最低受支持的服务器 Windows Server 2003 [桌面应用 | UWP 应用]
目标平台 Windows
标头 winbase.h (包括 Windows.h)
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

全局和本地函数

GlobalAlloc

GlobalFlags

GlobalLock

GlobalReAlloc

GlobalUnlock

内存管理函数