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


_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 для определения источника запросов на выделение.

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

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

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

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

Требования

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

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

_aligned_offset_realloc_dbg

<crtdbg.h>

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

Библиотеки

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

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

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

См. также

Ссылки

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