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


_aligned_recalloc_dbg

Изменяет размер блока памяти, выделенного или _aligned_malloc_aligned_offset_malloc инициализирует память до 0 (только отладочная версия).

Синтаксис

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

Параметры

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

number
Число элементов.

size
Размер каждого элемента в байтах.

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

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

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

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

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

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

Замечания

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

_aligned_recalloc_dbg перераспределяет указанный блок памяти, добавив немного больше пространства, чем запрошено (number * size), что может быть больше или меньше размера первоначально выделенного блока памяти. Дополнительное пространство используется диспетчером кучи отладки для связывания блоков памяти отладки и предоставления приложению сведений о заголовках отладки и перезаписи буферов. Перемещение может переместить исходный блок памяти в другое расположение в куче и изменить размер блока памяти. Пользовательская часть блока заполняется значением 0xCD, а буферы перезаписи заполняются 0xFD.

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

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

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

Требования

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

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

Библиотеки

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

См. также

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