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