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


_realloc_dbg

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

Синтаксис

void *_realloc_dbg(
   void *userData,
   size_t newSize,
   int blockType,
   const char *filename,
   int linenumber
);

Параметры

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

newSize
Запрошенный размер повторно выделенного блока (в байтах).

blockType
Запрошенный тип повторно выделенного блока (в байтах): _CLIENT_BLOCK или _NORMAL_BLOCK.

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

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

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

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

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

Замечания

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

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

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

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

Требования

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

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

Библиотеки

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

Пример

См. пример в _msize_dbg статье.

См. также

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