_aligned_offset_malloc_dbg
在指定对齐边界分配内存(仅限调试版本)。
语法
void * _aligned_offset_malloc_dbg(
size_t size,
size_t alignment,
size_t offset,
const char *filename,
int linenumber
);
参数
size
请求的内存分配的大小。
alignment
对齐值,必须是 2 的整数次幂。
offset
用于强制对齐的内存分配中的偏移量。
filename
指向已请求分配操作的源文件名的指针或 NULL
。
linenumber
请求分配操作所在的源文件中的行数或 NULL
。
返回值
指向已分配的内存块的指针或 NULL
(如果操作失败)。
注解
_aligned_offset_malloc_dbg
是 _aligned_offset_malloc
函数的调试版本。 未定义 _DEBUG
时,每个对 _aligned_offset_malloc_dbg
的调用都简化为对 _aligned_offset_malloc
的调用。 _aligned_offset_malloc
和 _aligned_offset_malloc_dbg
都可分配基堆中的内存块,但是 _aligned_offset_malloc_dbg
还提供几种调试功能:用于测试泄漏的块的用户部分两侧的缓冲区,以及用于确定分配请求的源的 filename
/linenumber
信息。 使用块类型参数跟踪特定分配类型不是对齐分配支持的调试功能。 对齐的分配将显示为 _NORMAL_BLOCK
块类型。
_aligned_offset_malloc_dbg
将使用比请求的 size
稍多的空间分配内存块。 额外的空间由调试堆管理器用于链接调试内存块,以及为应用程序提供调试标头信息和覆盖缓冲区。 分配该块后,使用值 0xCD 填充该块的用户部分,使用值 0xFD 填充每个覆盖缓冲区。
_aligned_offset_malloc_dbg
在需要对嵌套元素进行对齐的情况下很有用;例如,嵌套类需要进行对齐的情况。
_aligned_offset_malloc_dbg
基于 malloc
;有关详细信息,请参阅 malloc
。
如果内存分配失败或请求的大小大于 errno
,则此函数会将 ENOMEM
设置为 _HEAP_MAXREQ
。 有关 errno
的详细信息,请参阅 errno
、_doserrno
、_sys_errlist
和 _sys_nerr
。 此外,_aligned_offset_malloc
将验证其参数。 如果 alignment
不是 2 的幂,或者 offset
为非零且大于或等于 size
,则此函数将调用无效的参数处理程序,如参数验证中所述。 如果允许执行继续,则此函数将返回 NULL
并将 errno
设置为 EINVAL
。
若要了解如何在基堆的调试版本中分配、初始化和管理内存块,请参阅 CRT 调试堆详细信息。
若要了解分配块类型及其使用方式,请参阅调试堆上的块类型。
要求
例程 | 必需的标头 |
---|---|
_aligned_offset_malloc_dbg |
<crtdbg.h> |
有关兼容性的详细信息,请参阅 兼容性。
库
仅限 C 运行时库的调试版本。