IMalloc::Realloc 方法 (objidlbase.h)

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

语法

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

参数

[in] pv

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

[in] cb

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

返回值

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

注解

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

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

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

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

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

要求

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

另请参阅

IMalloc