_recalloc_dbg

重新分配数组并初始化其元素为 0 (" 只调试版本)。

void *_recalloc_dbg( 
   void *userData,
   size_t num,
   size_t size,
   int blockType,
   const char *filename,
   int linenumber 
);

参数

  • userData
    对以前指定的指针内存块。

  • num
    的请求数内存块。

  • size
    每个请求的内存块大小 (字节)。

  • blockType
    请求的内存块类型: _CLIENT_BLOCK 或 _NORMAL_BLOCK。

    有关分配的信息块类型以及如何使用它们,请参见 调试堆上的块类型

  • filename
    对请求分配操作或 NULL源文件的名称的指针。

  • linenumber
    在分配请求的操作或 NULL的源文件中的行号。

filename 和 linenumber 参数才可用,当 _recalloc_dbg 显式调用或 _CRTDBG_MAP_ALLOC 预处理器来定义。

返回值

在成功完成,此函数返回指向重新分配的部分内存块的用户,调用新的处理程序函数或返回 NULL。 有关返回行为的完整说明,请参见下面的 " 备注 " 节。 有关如何安装的更多信息使用新的处理程序函数,请参见 _recalloc 功能。

备注

_recalloc_dbg 是 _recalloc 函数的 " debug " 版本。 当 _DEBUG 未定义时,每个调用 _recalloc_dbg 减少到 _recalloc的调用。 _recalloc 和 _recalloc_dbg 在基堆分配内存,但是, _recalloc_dbg 满足一些调试功能:在测试块的两侧用户部分的缓冲区对于泄漏、跟踪一个块类型的参数特定分配类型和 filename/linenumber 信息确定分配请求的原点。

_recalloc_dbg 比可能会更大请求范围 (num * size) 若要重新指派指定的内存块。稍有多个空格或小于最初分配的内存块范围。 调试堆管理器用于附加空间链接调试内存块,并提供应用程序提供调试标题信息并复盖缓冲区。 重新分配可能导致将原始内存堆的其他位置,以及更改的范围内存块。 块的用户部分填充该值 0xCD,并且每个复盖缓冲区用 0xFD 填充。

,如果内存分配失败,_recalloc_dbg 设置 errno 到 ENOMEM ; EINVAL 返回,如果内存需要的数量 (前面提到的包含开销) 超过 _HEAP_MAXREQ。 有关此更改和其他错误代码的信息,请参见 errno、_doserrno、_sys_errlist和_sys_nerr

有关如何的信息存储在基堆的调试版本中分配,初始化,并管理,请参见 内存管理和调试堆。 有关调用标准堆函数之间的差异的信息与其调试在应用程序的调试版本的版本,请参见 使用调试版本与基版本

要求

实例

必需的头

_recalloc_dbg

crtdbg.h

有关更多兼容性信息,请参见中介绍的 兼容性

只调试 C 运行库 的版本。

.NET Framework 等效项

不适用。若要调用标准 C 函数,请使用 PInvoke。有关更多信息,请参见 平台调用示例

请参见

参考

调试实例