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