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


_aligned_offset_realloc_dbg

Изменяет размер блока памяти, который был выделен _aligned_malloc или _aligned_offset_malloc (только отладочная версия).

Синтаксис

void * _aligned_offset_realloc_dbg(
   void *memblock,
   size_t size,
   size_t alignment,
   size_t offset,
   const char *filename,
   int linenumber
);

Параметры

memblock
Указатель текущего блока памяти.

size
Размер выделения памяти.

alignment
Значение выравнивания, которое должно быть целой степенью числа 2.

offset
Смещение в выделение памяти для принудительного выполнения выравнивания.

filename
Указатель на имя исходного файла, запрашивающего aligned_offset_realloc операцию или NULL.

linenumber
Номер строки в исходном файле, где aligned_offset_realloc была запрошена операция или NULL.

Возвращаемое значение

_aligned_offset_realloc_dbg возвращает указатель void на перераспределенный (и, возможно, перемещенный) блок памяти. Возвращаемое значение имеет NULL значение, если размер равен нулю, и аргумент буфера не NULLявляется, или если недостаточно доступной памяти для расширения блока до заданного размера. В первом случае исходный блок освобождается. Во втором случае исходный блок не изменяется. Возвращаемое значение указывает на место хранения, соответствующее хранилищу любого типа объекта. Чтобы получить указатель на тип, отличающийся от void, используйте приведение типа для возвращаемого значения.

Замечания

_aligned_offset_realloc_dbg — это отладочная версия _aligned_offset_realloc функции. Если _DEBUG не определено, каждый вызов _aligned_offset_realloc_dbg уменьшается до вызова _aligned_offset_realloc. Как _aligned_offset_realloc и _aligned_offset_realloc_dbg перераспределять блок памяти в базовой куче, но _aligned_offset_realloc_dbg включает несколько функций отладки: буферы на любой стороне пользовательской части блока для проверки утечки и filename/linenumber сведения для определения источника запросов на выделение. Отслеживание определенных типов выделения с параметром типа блока не является поддерживаемой функцией отладки для выровненных выделений. Выровненные выделения будут отображаться как _NORMAL_BLOCK тип блока.

Например _aligned_offset_malloc, _aligned_offset_realloc_dbg позволяет выровнять структуру по смещением в структуре.

_realloc_dbg повторно выделяет указанный блок памяти, добавив немного больше пространства, чем запрошено newSize. newSize может быть больше или меньше размера первоначально выделенного блока памяти. Дополнительное пространство используется диспетчером кучи отладки для связывания блоков памяти отладки и предоставления приложению сведений о заголовках отладки и перезаписи буферов. Перемещение может переместить исходный блок памяти в другое расположение в куче, а также изменить размер блока памяти. Если блок памяти перемещен, содержимое исходного блока перезаписывается.

Эта функция задает для errno значение ENOMEM в случае сбоя выделения памяти или если запрошенный размер был больше _HEAP_MAXREQ. Дополнительные сведения о , см. в errnoразделеerrno , _doserrno_sys_errlistи _sys_nerr. Кроме того, _aligned_offset_realloc_dbg проверяет свои параметры. Если alignment значение не равно 2 или не равно нулю и offset больше или равно size, эта функция вызывает обработчик недопустимых параметров, как описано в разделе проверки параметров. Если продолжение выполнения разрешено, эта функция возвращает NULL и задает для errno значение EINVAL.

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

Требования

Маршрут Обязательный заголовок
_aligned_offset_realloc_dbg <crtdbg.h>

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

Библиотеки

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

См. также

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