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