_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.
Параметры filename и linenumber доступны, только если _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, and _sys_nerr.
Сведения о том, как происходит выделение, инициализация и управление блоками памяти в отладочной версии базовой кучи см. в разделе Сведения о куче отладки CRT. Дополнительные сведения о типах блока выделения и способах их использования см. в разделе Типы блоков в куче отладки. Сведения о различиях между вызовом стандартной функции кучи и ее отладочной версии в отладочной сборке приложения см. в разделе Версии отладки функций выделения кучи.
Требования
Подпрограмма |
Обязательный заголовок |
---|---|
_realloc_dbg |
<crtdbg.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость во введении.
Библиотеки
Только отладочные версии Библиотеки времени выполнения языка C.
Пример
См. пример в разделе _msize_dbg.
Эквивалент в .NET Framework
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.