free
Освобождает блок памяти.
Синтаксис
void free(
void *memblock
);
Параметры
memblock
Ранее выделенный блок памяти, который требуется освободить.
Замечания
Функция free
освобождает блок памяти (memblock
), который был выделен ранее вызовом функции calloc
, malloc
или realloc
. Число освобожденных байтов эквивалентно количеству запрошенных байтов при выделении блока (или перераспределении).realloc
Если memblock
есть NULL
, указатель игнорируется и free
немедленно возвращается. Попытка освободить недопустимый указатель (указатель на блок памяти, который не был выделен calloc
malloc
realloc
или) может повлиять на последующие запросы на выделение и вызвать ошибки.
В случае возникновения ошибки при освобождении памяти для errno
задаются сведения о характере сбоя, полученные от операционной системы. Дополнительные сведения см. в разделе errno
, _doserrno
, _sys_errlist
, и _sys_nerr
.
После освобождения блока памяти свести к минимуму объем свободной памяти в куче, _heapmin
объединив неиспользуемые регионы и отпустив их обратно в операционную систему. Освобожденная память, которая не освобождается в операционной системе, восстанавливается в свободном пуле и снова доступна для выделения.
Если приложение связано с отладочной версией библиотек времени выполнения C, free
разрешается в _free_dbg
. Дополнительные сведения о том, как куча управляется во время отладки, см. в разделе "Отладочная куча CRT".
Функция free
помечена как __declspec(noalias)
; это означает, что функция гарантировано не изменяет глобальные переменные. Дополнительные сведения см. в разделе noalias
.
Чтобы освободить память, выделенную с _malloca
помощью , используйте _freea
.
По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.
Требования
Function | Обязательный заголовок |
---|---|
free |
<stdlib.h> и <malloc.h> . |
Дополнительные сведения о совместимости см. в разделе Совместимость.
Пример
Пример см. в примере malloc
.
См. также
Распределение памяти
_alloca
calloc
malloc
realloc
_free_dbg
_heapmin
_freea