_aligned_malloc_dbg

在指定对齐边界上分配内存,为调试标头和覆盖缓冲区提供额外空间(仅限调试模式)。

语法

void * _aligned_malloc_dbg(
    size_t size,
    size_t alignment,
   const char *filename,
   int linenumber
);

参数

size
请求的内存分配的大小。

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

filename
指向已请求分配操作的源文件名的指针或 NULL

linenumber
请求分配操作所在的源文件中的行数或 NULL

返回值

指向已分配的内存块的指针或 NULL(如果操作失败)。

注解

_aligned_malloc_dbg_aligned_malloc 函数的调试版本。 未定义 _DEBUG 时,每个对 _aligned_malloc_dbg 的调用都简化为对 _aligned_malloc 的调用。 _aligned_malloc_aligned_malloc_dbg 都可分配基堆中的内存块,但是 _aligned_malloc_dbg 还提供几种调试功能:用于测试泄漏的块的用户部分两侧的缓冲区,以及用于确定分配请求的源的 filename/linenumber 信息。 使用块类型参数跟踪特定分配类型不是对齐分配支持的调试功能。 对齐的分配将显示为 _NORMAL_BLOCK 块类型。

_aligned_malloc_dbg 将使用比请求的 size 稍多的空间分配内存块。 额外的空间由调试堆管理器用于链接调试内存块,以及为应用程序提供调试标头信息和覆盖缓冲区。 分配该块后,使用值 0xCD 填充该块的用户部分,使用值 0xFD 填充每个覆盖缓冲区。

如果内存分配失败,或者如果所需的内存量(包括之前提到过的开销)超过 _aligned_malloc_dbg,则 errnoENOMEM 设置为 _HEAP_MAXREQ。 有关此错误代码和其他错误代码的信息,请参阅 errno_doserrno_sys_errlist_sys_nerr。 此外,_aligned_malloc_dbg 将验证其参数。 如果 alignment 不是 2 的幂或 size 是零,则此函数调用的参数处理程序无效,如参数验证中所述。 如果允许执行继续,则此函数将返回 NULL 并将 errno 设置为 EINVAL

若要了解如何在基堆的调试版本中分配、初始化和管理内存块,请参阅 CRT 调试堆详细信息。 若要了解分配块类型及其使用方式,请参阅调试堆上的块类型。 有关标准堆函数与调试版本之间的差异的信息,请参阅堆分配函数的调试版本

要求

例程 必需的标头
_aligned_malloc_dbg <crtdbg.h>

有关兼容性的详细信息,请参阅 兼容性

仅限 C 运行时库的调试版本。

另请参阅

调试例程