localReAlloc 函数 (winbase.h)

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

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

语法

DECLSPEC_ALLOCATOR HLOCAL LocalReAlloc(
  [in] _Frees_ptr_opt_ HLOCAL hMem,
  [in] SIZE_T                 uBytes,
  [in] UINT                   uFlags
);

参数

[in] hMem

要重新分配的本地内存对象的句柄。 此句柄由 LocalAllocLocalReAlloc 函数返回。

[in] uBytes

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

[in] uFlags

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

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

含义
LMEM_MOVEABLE
0x0002
分配固定或可移动内存。

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

 

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

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

返回值

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

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

注解

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

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

要求

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

另请参阅

全局和本地函数

LocalAlloc

LocalFree

LocalLock

内存管理函数