#include <stdlib.h>
void free(void *ptr);
Функция free() возвращает в динамически распределяемую область памяти блок памяти, адресуемый указателем рtr, после чего эта память становится доступной для выделения в будущем.
Обязательно следите, чтобы free() вызывалась только с указателем, который был ранее получен в результате вызова одной из системных функций динамического распределения. Использование недопустимого указателя при вызове, скорее всего, приведет к разрушению механизма управления памятью и, возможно, вызовет крах системы. При передаче нулевого указателя функция free() не выполняет никакого действия.
Пример
Эта программа распределяет блок памяти для вводимых пользователем строк, а затем освобождает блок памяти:
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
char *str[100];
int i;
for(i=0; i<100; i++) {
if((str[i] = malloc(128))==NULL) {
printf("Ошибка при распределении памяти\n");
exit(1);
}
gets(str[i]);
}
/* Освобождение блока памяти */
for(i=0; i<100; i++) free(str[i]);
return 0;
}
Зависимые функции
calloc() malloc() realloc()