_aligned_offset_malloc_dbg
分配内存到指定的对齐边界 (仅限调试版本)。
void * _aligned_offset_malloc_dbg(
size_t size,
size_t alignment,
size_t offset,
const char *filename,
int linenumber
);
参数
[in] size
请求的内存分配的大小。[in] alignment
对齐值必须是2的整数次幂。[in] offset
强制对齐内存分配中的偏移量。[in] filename
指向需要分配操作数或者为空的源文件的名称的指针。[in] linenumber
在请求的分配操作数或为空的源文件中的行号。
返回值
如果操作失败,则指针指向分配或是为 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 信息决定分配请求的来源。
_aligned_offset_malloc_dbg 分配比请求的size 稍微更多空间的内存块。 通过调试堆管理器来连接调试内存块并且提供应用程序调试头信息和重写缓冲区来使用额外的空间。 当分配块时,块的用户部分用 0xCD 值填充,并且每个覆盖缓冲区用 0xFD 值填充。
在嵌套元素中需要对齐的情况下,_aligned_offset_malloc_dbg 是有用的;例如,如果在嵌套类中需要对齐。
_aligned_offset_malloc_dbg 基于 malloc;有关详细信息,请参阅 malloc。
如果内存分配失败或是如果请求的大小比_HEAP_MAXREQ 更大,则函数将 ENOMEM 设置为 errno 。 有关 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 运行时库的调试版本。
.NET Framework 等效项
不适用。若要调用标准 C 函数,请使用 PInvoke。有关更多信息,请参见平台调用示例。