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


_recalloc_dbg

Повторно выделяет массив и инициализирует его элементы нулями (только отладочная версия).

Синтаксис

void *_recalloc_dbg(
   void *userData,
   size_t num,
   size_t size,
   int blockType,
   const char *filename,
   int linenumber
);

Параметры

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

number
Запрошенное число блоков памяти.

size
Запрошенный размер каждого блока памяти (байт).

blockType
Запрошенный тип блока памяти: _CLIENT_BLOCK или _NORMAL_BLOCK.

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

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

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

linenumber Параметры filename доступны только при _recalloc_dbg явном вызове или _CRTDBG_MAP_ALLOC определении константы препроцессора.

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

При успешном завершении эта функция возвращает указатель на пользовательную часть блока перераспределенной памяти, вызывает новую функцию обработчика или возвращает.NULL Полное описание поведения возвращения см. в следующем разделе "Примечания". Дополнительные сведения о том, как используется новая функция обработчика, см. в _recalloc этой функции.

Замечания

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

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

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

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

Требования

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

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

Библиотеки

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

См. также

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