globalReAlloc 函数 (winbase.h)

更改指定全局内存对象的大小或属性。 大小可以增加或减少。

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

语法

DECLSPEC_ALLOCATOR HGLOBAL GlobalReAlloc(
  [in] _Frees_ptr_ HGLOBAL hMem,
  [in] SIZE_T              dwBytes,
  [in] UINT                uFlags
);

参数

[in] hMem

要重新分配的全局内存对象的句柄。 此句柄由 GlobalAllocGlobalReAlloc 函数返回。

[in] dwBytes

内存块的新大小(以字节为单位)。 如果 uFlags 指定 GMEM_MODIFY,则忽略此参数。

[in] uFlags

重新分配选项。 如果指定 了GMEM_MODIFY ,则函数仅在忽略 dwBytes 参数 (修改内存对象的属性。) 否则,函数将重新分配内存对象。

可以选择将 GMEM_MODIFY 与以下值组合在一起。

含义
GMEM_MOVEABLE
0x0002
分配可移动内存。

如果内存是锁定 GMEM_MOVEABLE 内存块或 GMEM_FIXED 内存块,并且未指定此标志,则只能就地重新分配内存。

 

如果此参数未指定 GMEM_MODIFY,则可以使用以下值。

含义
GMEM_ZEROINIT
0x0040
如果内存对象的大小增大,则会导致其他内存内容初始化为零。

返回值

如果函数成功,则返回值是重新分配的内存对象的句柄。

如果函数失败,则返回值为 NULL。 要获得更多的错误信息,请调用 GetLastError。

注解

如果 GlobalReAlloc 重新分配可移动对象,则返回值是内存对象的句柄。 若要将句柄转换为指针,请使用 GlobalLock 函数。

如果 GlobalReAlloc 重新分配固定对象,则返回的句柄值是内存块的第一个字节的地址。 若要访问内存,进程只需将返回值强制转换为指针。

如果 GlobalReAlloc 失败,则不会释放原始内存,并且原始句柄和指针仍然有效。

要求

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

另请参阅

全局和本地函数

GlobalAlloc

GlobalDiscard

GlobalLock

内存管理函数