globalReAlloc 函数 (winbase.h)
更改指定全局内存对象的大小或属性。 大小可以增加或减少。
语法
DECLSPEC_ALLOCATOR HGLOBAL GlobalReAlloc(
[in] _Frees_ptr_ HGLOBAL hMem,
[in] SIZE_T dwBytes,
[in] UINT uFlags
);
参数
[in] hMem
要重新分配的全局内存对象的句柄。 此句柄由 GlobalAlloc 或 GlobalReAlloc 函数返回。
[in] dwBytes
内存块的新大小(以字节为单位)。 如果 uFlags 指定 GMEM_MODIFY,则忽略此参数。
[in] uFlags
重新分配选项。 如果指定 了GMEM_MODIFY ,则函数仅在忽略 dwBytes 参数 (修改内存对象的属性。) 否则,函数将重新分配内存对象。
可以选择将 GMEM_MODIFY 与以下值组合在一起。
值 | 含义 |
---|---|
|
分配可移动内存。
如果内存是锁定 GMEM_MOVEABLE 内存块或 GMEM_FIXED 内存块,并且未指定此标志,则只能就地重新分配内存。 |
如果此参数未指定 GMEM_MODIFY,则可以使用以下值。
值 | 含义 |
---|---|
|
如果内存对象的大小增大,则会导致其他内存内容初始化为零。 |
返回值
如果函数成功,则返回值是重新分配的内存对象的句柄。
如果函数失败,则返回值为 NULL。 要获得更多的错误信息,请调用 GetLastError。
注解
如果 GlobalReAlloc 重新分配可移动对象,则返回值是内存对象的句柄。 若要将句柄转换为指针,请使用 GlobalLock 函数。
如果 GlobalReAlloc 重新分配固定对象,则返回的句柄值是内存块的第一个字节的地址。 若要访问内存,进程只需将返回值强制转换为指针。
如果 GlobalReAlloc 失败,则不会释放原始内存,并且原始句柄和指针仍然有效。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [桌面应用 | UWP 应用] |
最低受支持的服务器 | Windows Server 2003 [桌面应用 | UWP 应用] |
目标平台 | Windows |
标头 | winbase.h (包括 Windows.h) |
Library | Kernel32.lib |
DLL | Kernel32.dll |