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


_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. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

См. также

Ссылки

Процедуры отладки

_malloc_dbg