Поделиться через


_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
    Значение выравнивания, которое должно быть целочисленной степенью двойки.

  • [входящий] 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 для определения источника запросов на выделение.

_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, and _sys_nerr. Кроме того, _aligned_offset_malloc проверяет свои параметры. Если alignment не степень двойки, или если offset больше или равно size и отлично от нуля, эта функция вызывает обработчик недопустимого параметра, как описано в разделе Проверка параметров. Если продолжение выполнения разрешено, эта функция возвращает NULL и устанавливает errno в значение EINVAL.

Сведения о том, как происходит выделение, инициализация и управление блоками памяти в отладочной версии базовой кучи см. в разделе Сведения о куче отладки CRT.

Дополнительные сведения о типах блока выделения и способах их использования см. в разделе Типы блоков в куче отладки.

Требования

Подпрограмма

Обязательный заголовок

_aligned_offset_malloc_dbg

<crtdbg.h>

Дополнительные сведения о совместимости см. в разделе Совместимость во введении.

Библиотеки

Только отладочные версии Библиотеки времени выполнения языка C.

Эквивалент в .NET Framework

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

См. также

Ссылки

Процедуры отладки