Форум программистов, компьютерный форум, киберфорум
Наши страницы

C для начинающих

Войти
Регистрация
Восстановить пароль
 
m1ster
1 / 1 / 0
Регистрация: 21.12.2011
Сообщений: 55
#1

Освободить незадействованную память - C (СИ)

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

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

Правильно выделить и освободить память - C (СИ)
Помогите,пожалуйста, правильно выделить и освободить память. Чтобы не было утечек памяти. #include <stdio.h> #include...

Освободить память, выделенную под матрицу - C (СИ)
Вот выделена память под массив двумерный: int **matrix; int size = 100; matrix = (int **)malloc(size *...

Удалить связный список и освободить память - C (СИ)
Вот так создаю связный список typedef struct { comp el; void* next; } list; list* first = NULL; /*typedef struct { //...

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

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

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

4
Кот Ангенс
318 / 268 / 38
Регистрация: 24.05.2012
Сообщений: 629
02.06.2012, 14:57 #2
С помощью функции void free(void*);
0
m1ster
1 / 1 / 0
Регистрация: 21.12.2011
Сообщений: 55
02.06.2012, 21:03  [ТС] #3
а нельзя while(prev)
t=prev->next;
free(t);
??
тоесть берем элемент -присваиваем переменной t ,t переменная типа списка
освобождаем
0
silent_1991
Эксперт С++
5006 / 3064 / 149
Регистрация: 11.11.2009
Сообщений: 7,043
Завершенные тесты: 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 / 0
Регистрация: 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
Привет! Вот еще темы с ответами:

Как сначала возвратить значение а потом освободить память - C (Си)
Как сначала возвратить переменную типа char а потом освободить память которую она зарезирвировала? char* return_remove(PrioQueue...

Освободить указатели рекурсивно - C (СИ)
Всем доброго времени суток. Изучаю язык Си, пытаюсь сделать подобие динамических, ассоциативных массивов. Суть в следующем. Дано:...

Как освободить старые ImageVew чтобы освободить память - Программирование Android
Привет всем Я новичок поэтому прошу сильно не пинать. В общем мое первое приложение типа интернет магазин. Одно окно в котором...

.NET 4.x Освободить память - C#
Вот к примеру, прога обрабатывает строки в txt. Как сделать чтобы те txt которые она уже обработала, как бы не нагружали озу ?


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

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

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