IMalloc::Realloc 方法 (objidl.h)

更改以前分配的内存块的大小。

语法

void * Realloc(
  [in] void   *pv,
  [in] SIZE_T cb
);

参数

[in] pv

指向要重新分配的内存块的指针。 此参数可以为 NULL,如下面的“备注”部分所述。

[in] cb

要重新分配的内存块的大小(以字节为单位)。 此参数可以为 0,如下面的“备注”部分所述。

返回值

如果方法成功,则返回值是指向重新分配的内存块的指针。 否则为 NULL。

注解

此方法重新分配内存块,但不保证其内容已初始化。 因此,调用方负责随后初始化内存。 由于对齐和维护信息所需的空间,分配的块可能大于 cb 字节。

pv 参数指向 块的开头。 如果 pv 为 NULL, 则 Realloc 将采用 与 IMalloc::Alloc 相同的方式分配新的内存块。 如果 pv 不为 NULL,则它应该是之前调用 Alloc 返回的指针。

cb 参数指定新块的大小(以字节为单位)。 块的内容不随其新旧大小而更改,尽管新块可以在不同的位置。 由于新块可能位于不同的内存位置,因此 Realloc 返回的指针不一定是通过 pv 参数传递的指针。 如果 pv 不为 NULL 且 cb 为零,则释放 pv 指向的内存。

Realloc 返回指向重新分配的 (的 void 指针,并可能移动) 内存块。 如果大小为零且缓冲区参数不为 NULL ,或者没有足够的可用内存将块扩展到指定大小,则返回值为 NULL。 在第一种情况下,释放原始块;第二个,原始块保持不变。

返回值将指向保证适当对齐任何类型的对象的存储的存储空间。 若要获取指向 void 以外的类型的指针,请在返回值上使用类型强制转换。

要求

要求 值
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 objidl.h (包括 ObjIdl.h)

另请参阅

IMalloc