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


free

Освобождает блок памяти.

Синтаксис

void free(
   void *memblock
);

Параметры

memblock
Ранее выделенный блок памяти, который требуется освободить.

Замечания

Функция free освобождает блок памяти (memblock), который был выделен ранее вызовом функции calloc, malloc или realloc. Число освобожденных байтов эквивалентно количеству запрошенных байтов при выделении блока (или перераспределении).realloc Если memblock есть NULL, указатель игнорируется и free немедленно возвращается. Попытка освободить недопустимый указатель (указатель на блок памяти, который не был выделен callocmallocreallocили) может повлиять на последующие запросы на выделение и вызвать ошибки.

В случае возникновения ошибки при освобождении памяти для 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