Free
Материал из Википедии — свободной энциклопедии
- Правильный заголовок этой статьи — free. Он показан некорректно из-за технических ограничений.
free (англ. освобождение) — функция стандартной библиотеки языка Си, предназначенная для освобожения ранее выделенной динамической памяти.
Функция принимает указатель на область, подлежащую освобождению или NULL. Кода возврата не имеет. Free не проверяет указатель на правильность, и может «освободить» невыделенную область памяти, что в некоторых реализациях может привести к необратимому повреждению кучи (англ. heap). Вызов функции с NULL безопасен (проверка на NULL обязана выполняться внутри free согласно стандарту). Для избежания повреждения кучи некоторые руководства по языку Си рекомендуют обнулять каждый освобождаемый указатель.
Область памяти, освобождённая после вызова free может быть выделена снова, однако частый вызов malloc и free может привести к фрагментации кучи и невозможности выделить области памяти большо'го объёма.
Функция определена в заголовочных файлах malloc.h
, stdlib.h
. Точное описание поведения функции приводится в стандарте ANSI C, на него же ссылается описание в стандарте POSIX.
[править] Пример использования
pointer = malloc( sizeof(data) * 1000 ); /* pointer check and usage */ free( pointer ); pointer = NULL;