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


_aligned_offset_realloc

Изменяет размер блока памяти, выделенного с помощью _aligned_malloc или _aligned_offset_malloc.

void * _aligned_offset_realloc(
   void *memblock, 
   size_t size, 
   size_t alignment,
   size_t offset
);

Параметры

  • memblock
    Текущий указатель на блок памяти.

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

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

  • offset
    Смещение в выделении памяти для обеспечения выравнивания.

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

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

_aligned_offset_realloc помечена __declspec(noalias) и __declspec(restrict), что означает, что функция гарантированно не изменит глобальные переменные, а для возвращаемого указателя не будет создан псевдоним. Дополнительные сведения см. в разделах noalias и restrict.

Заметки

Подобно _aligned_offset_malloc, _aligned_offset_realloc позволяет, чтобы структура выравнивалась от смещения внутри структуры.

_aligned_offset_realloc основана на malloc. Дополнительные сведения об использовании _aligned_offset_malloc см. в разделе malloc. Если memblock равно NULL, функция вызывает _aligned_offset_malloc внутренне.

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

Требования

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

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

_aligned_offset_realloc

<malloc.h>

Пример

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

См. также

Ссылки

Выравнивание данных