Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
m1ster
1 / 1 / 1
Регистрация: 21.12.2011
Сообщений: 55
1

Освободить незадействованную память

02.06.2012, 00:14. Просмотров 1031. Ответов 4
Метки нет (Все метки)

у меня создается список под каждый элемент выделяю память,потом с этим списком происходят операции и элементов становится меньше, как убрать память лишнюю?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.06.2012, 00:14
Ответы с готовыми решениями:

Правильно выделить и освободить память
Помогите,пожалуйста, правильно выделить и освободить память. Чтобы не было...

Удалить связный список и освободить память
Вот так создаю связный список typedef struct { comp el; void* next; }...

Не могу освободить память с функцией free
int *get_vector(t_graph *begin, int **mat_adc, int n, int end) { int ...

Освободить память, выделенную под матрицу
Вот выделена память под массив двумерный: int **matrix; ...

Как освободить память выделенную в подпрограмме
Имеется функция создания элемента списка struct list_int* create_elem(int num,...

4
Кот Ангенс
318 / 268 / 128
Регистрация: 24.05.2012
Сообщений: 629
02.06.2012, 14:57 2
С помощью функции void free(void*);
0
m1ster
1 / 1 / 1
Регистрация: 21.12.2011
Сообщений: 55
02.06.2012, 21:03  [ТС] 3
а нельзя while(prev)
t=prev->next;
free(t);
??
тоесть берем элемент -присваиваем переменной t ,t переменная типа списка
освобождаем
0
silent_1991
Эксперт С++
5011 / 3071 / 271
Регистрация: 11.11.2009
Сообщений: 7,045
Завершенные тесты: 1
03.06.2012, 01:51 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

m1ster, нельзя, так вы на первом же шаге потеряете t, освободив второй элемент списка. Нужно примерно так:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
struct ListNode *e = start; // e указывает на первый элемент списка
struct ListNode *temp; // временная переменная для хранения указателя на элемент списка
 
// Пока в списке есть элементы
while (e != NULL)
{
    // Запоминаем удаляемый элемент
    temp = e;
    // Передвигаем указатель на следующий элемент
    e = e->next;
    
    // Удаляем запомненный ранее элемент
    free(temp);
}
0
m1ster
1 / 1 / 1
Регистрация: 21.12.2011
Сообщений: 55
03.06.2012, 14:14  [ТС] 5
спасибо
0
03.06.2012, 14:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.06.2012, 14:14

Как освободить динамически выделенную память в структуре
Заголовочный файл myheader.h struct tagDate { int yy, mm, dd; };...

Как правильно освободить память двумерного массива
Память для test выделена так: char **test; test = (char **)calloc(n,...

Как сначала возвратить значение а потом освободить память
Как сначала возвратить переменную типа char а потом освободить память которую...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru