#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; }