_recalloc
realloc 和 calloc 的组合。 重新分配内存中的一个数组并初始化其元素为 0。
void *_recalloc(
void *memblock
size_t num,
size_t size
);
参数
memblock
对以前指定的指针内存块。num
元素的数目。size
字节长度每个元素。
返回值
_recalloc 返回 void 指针重新分配的 (也可能是移动) 内存块。
如果未展开块足够的可用内存到给定范围,原始的块保持不变,并且, NULL 返回。
如果请求的大小为零,则块指向由 memblock 释放;返回值是 NULL,并且, memblock 左侧点在释放的块。
返回值指向确保为任何类型的对象存储正确对齐的存储空间。 获取对一个类型的指针 void除了之外,将使用一个返回值的类型转换。
备注
分配的内存块范围的起始recalloc 函数。 memblock 参数指向的开头内存块。 如果 memblock 是 NULL, _recalloc 相同的行为与 calloc 并分配新块 num * size 字节。 每个元素初始化为 0。 如果 memblock 不是 NULL,它应该是前一个返回的指针调用 calloc、 malloc或 realloc。
由于新块可以在新的内存位置, _返回的指针recalloc 不一定指针传递 memblock 参数。
_recalloc 设置 errno 到 ENOMEM ,如果内存分配失败,或如果内存请求的数据量超过 _HEAP_MAXREQ。 有关此更改和其他错误代码的信息,请参见 errno、_doserrno、_sys_errlist和_sys_nerr。
recalloc 调用 realloc 为了使用 C++ _set_new_mode 功能将新的处理程序模式。 新的处理程序模式指示,在失败时, realloc 是否调用新的处理程序实例由设置由 _set_new_handler。 默认情况下, realloc 不调用在发生故障的新处理程序实例分配内存。 可以重写此默认行为,以便,那么,当 _recalloc 不能分配内存时, realloc 类似的方式调用新的处理程序实例 new 运算符,则它的原因相同失败。 若要重写默认值,请调用
_set_new_mode(1)
早期程序或指向与 NEWMODE.OBJ。
当应用程序使用 C 运行库时的调试版本链接, _recalloc 解析为 _recalloc_dbg。 有关堆方式的更多信息管理在调试过程中,请参见 CRT 调试堆。
_recalloc 标记为 __declspec(noalias) 和 __declspec(restrict),这意味着函数保证不修改全局变量,因此,返回的指针没有抗锯齿。 有关更多信息,请参见 noalias 和 限制。
要求
实例 |
必需的头 |
---|---|
_recalloc |
stdlib.h 和 malloc.h |
有关其他的兼容性信息,请参见中介绍的 兼容性 。
.NET Framework 等效项
不适用。若要调用标准 C 函数,请使用 PInvoke。有关更多信息,请参见 平台调用示例。