_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、 mallocrealloc

由于新块可以在新的内存位置, _返回的指针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。有关更多信息,请参见 平台调用示例

请参见

参考

内存分配

_recalloc_dbg

_aligned_recalloc

_aligned_offset_recalloc

free

概念

LINK选项