_aligned_recalloc

更改使用 _aligned_malloc_aligned_offset_malloc 分配的内存块的大小,并将内存初始化为 0。

语法

void * _aligned_recalloc(
   void *memblock,
   size_t num,
   size_t size,
   size_t alignment
);

参数

memblock
当前的内存块指针。

number
元素数量。

size
每个元素的大小(以字节为单位)。

alignment
对齐值,必须是 2 的整数次幂。

返回值

_aligned_recalloc 将返回指向重新分配的(并且可能已移动的)内存块的 void 指针。 如果大小为零且缓冲区自变量不为 NULL,或内存不足以将块展开到给定的大小,则返回值为 NULL。 在第一种情况下,会释放原始块。 在第二种情况下,将不会更改原始块。 返回值将指向适当对齐任何类型的对象的存储的存储空间。 若要获取指向类型而非 void 的指针,请在返回值上使用类型转换。

重新分配内存并更改块对齐是错误的。

注解

_aligned_recalloc 基于 malloc。 有关使用 _aligned_offset_malloc 的详细信息,请参见malloc

如果内存分配失败或请求的大小大于 errno,则此函数会将 ENOMEM 设置为 _HEAP_MAXREQ。 有关 errno 的详细信息,请参阅 errno_doserrno_sys_errlist_sys_nerr。 此外,_aligned_recalloc 将验证其参数。 如果 alignment 不是 2 的幂,则此函数调用的参数句柄无效,如参数验证中所述。 如果允许执行继续,则此函数将返回 NULL 并将 errno 设置为 EINVAL

默认情况下,此函数的全局状态范围限定为应用程序。 若要更改此行为,请参阅 CRT 中的全局状态

要求

例程 必需的标头
_aligned_recalloc <malloc.h>

另请参阅

数据对齐
_recalloc
_aligned_offset_recalloc