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


_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.

См. также

Отладка подпрограмм