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.

Требования

Компонент Обязательный заголовок
free <stdlib.h> и <malloc.h>

Дополнительные сведения о совместимости см. в разделе Compatibility.

Пример

См. пример для malloc.

См. также раздел

Выделение памяти
_alloca
calloc
malloc
realloc
_free_dbg
_heapmin
_freea