Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Повторно выделяет массив и инициализирует его элементы нулями (только отладочная версия).
Синтаксис
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.