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


_aligned_realloc_dbg

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

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

Параметры

  • [входной] memblock
    Указатель текущего блока памяти.

  • [входной] size
    Размер запрошенного выделения памяти.

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

  • [входной] filename
    Указатель на имя исходного файла, который запросил операцию realloc, или NULL.

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

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

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

Будет ошибкой повторно выделить память и изменить выравнивание блока.

Заметки

_aligned_realloc_dbg — это отладочная версия функции _aligned_realloc. Если _DEBUG не определен, каждый вызов функции _aligned_realloc_dbg сокращается до вызова функции _aligned_realloc. И _aligned_realloc, и _aligned_realloc_dbg выполняют перераспределение блока памяти в основной куче, однако _aligned_realloc_dbg включает различные функции отладки: буферы на обеих сторонах пользовательской части блока для тестирования утечек, параметр типа блока для отслеживания конкретных типов выделения, а также сведения о filename/linenumber для определения источника запросов на выделение.

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

_aligned_realloc_dbg задает для errno значение ENOMEM в случае сбоя выделения памяти или если необходимый объем памяти (включая ранее упомянутую нагрузку) превышает _HEAP_MAXREQ. Сведения об этих и других кодах ошибок см. в разделе errno, _doserrno, _sys_errlist, and _sys_nerr.

Кроме того, _aligned_realloc_dbg проверяет свои параметры. Если alignment не является степенью числа 2, эта функция вызывает обработчик недопустимых параметров, как описано в Проверка параметров. Если продолжение выполнения разрешено, эта функция возвращает NULL и задает для errno значение EINVAL.

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

Требования

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

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

_aligned_realloc_dbg

<crtdbg.h>

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

Библиотеки

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

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

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

См. также

Ссылки

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