_aligned_offset_recalloc
更改使用 _aligned_malloc
或 _aligned_offset_malloc
分配的内存块的大小,并将内存初始化为 0。
语法
void * _aligned_offset_recalloc(
void *memblock,
size_t num,
size_t size,
size_t alignment,
size_t offset
);
参数
memblock
当前的内存块指针。
number
元素数量。
size
每个元素的长度(以字节为单位)。
alignment
对齐值,必须是 2 的整数次幂。
offset
用于强制对齐的内存分配中的偏移量。
返回值
_aligned_offset_recalloc
将返回指向重新分配的(并且可能已移动的)内存块的 void 指针。 如果大小为零且缓冲区自变量不为 NULL
,或内存不足以将块展开到给定的大小,则返回值为 NULL
。 在第一种情况下,会释放原始块。 在第二种情况下,将不会更改原始块。 返回值将指向适当对齐任何类型的对象的存储的存储空间。 若要获取指向类型而非 void 的指针,请在返回值上使用类型转换。
_aligned_offset_recalloc
被标记为 __declspec(noalias)
和 __declspec(restrict)
,也就是说确保该函数不能修改全局变量,并且指针返回不使用别名。 有关详细信息,请参阅 noalias
和 restrict
。
备注
与 _aligned_offset_malloc
相同,_aligned_offset_recalloc
也允许在结构内的某个偏移量上对齐结构。
_aligned_offset_recalloc
基于 malloc
。 有关使用 _aligned_offset_malloc
的详细信息,请参见malloc
。 如果 memblock
是 NULL
,则函数从内部调用 _aligned_offset_malloc
。
如果内存分配失败或请求的大小 (number
* size
) 大于 _HEAP_MAXREQ
,则此函数会将 errno
设置为 ENOMEM
。 有关 errno
的详细信息,请参阅 errno
、_doserrno
、_sys_errlist
和 _sys_nerr
。 此外,_aligned_offset_recalloc
将验证其参数。 如果 alignment
不是 2 的幂,或者 offset
为非零且大于或等于请求的 size
,则此函数将调用无效的参数处理程序,如参数验证中所述。 如果允许执行继续,则此函数将返回 NULL
并将 errno
设置为 EINVAL
。
默认情况下,此函数的全局状态范围限定为应用程序。 若要更改此行为,请参阅 CRT 中的全局状态。
要求
例程 | 必需的标头 |
---|---|
_aligned_offset_recalloc |
<malloc.h> |