_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
статье.