Форум программистов, компьютерный форум CyberForum.ru

Почему течет память ? - C++

Восстановить пароль Регистрация
 
druidich
 Аватар для druidich
30 / 30 / 4
Регистрация: 21.05.2012
Сообщений: 428
05.07.2015, 08:36     Почему течет память ? #1
пишу небольшой класс по работе с двусвязными списками


Не по теме:


часть класса

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
List::List()
{
    
    head = nullptr;
    tail = nullptr;
}
 
void List::Add(int data){
    //item * newnode = new item;
    //newnode->data = data;
    if (head == nullptr)
    {
        //newnode->next = newnode;
        //newnode->prev = newnode;
        /*head = newnode;
        tail = head;
        tail->next = head;
        tail->prev = head;*/
        head = new item();
        head->data = data;
        head->next = head;
        head->prev = head;
        tail = head;
        std::cout << "head = " << data << std::endl;
    }
}
сама структура item
C++
1
2
3
4
5
struct item{
    int data;
    item* next = nullptr;
    item* prev = nullptr;
};
в main пишу
C++
1
2
3
    auto a = new List();
    
    a->Add(123);



в итоге получаю утекчку памяти :\
Миниатюры
Почему течет память ?  
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.07.2015, 08:36     Почему течет память ?
Посмотрите здесь:

Почему не взяли на обучение в CQG, на сайте нашел испытательное задание, сделал и отослал. Не взяли и не объяснили почему. Хочу услышать мнения. C++
Почему MS-DOS не любит кириллицу ? (Или почему она не любит меня ?) C++
Статическая память,Динамическая память. C++
С++ течет при наследовании C++
Ругается на деструктор (выделял динамически память). Почему? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rius
 Аватар для Rius
1760 / 1145 / 274
Регистрация: 25.05.2015
Сообщений: 4,072
Записей в блоге: 4
Завершенные тесты: 4
05.07.2015, 08:43     Почему течет память ? #2
Деструктор пропишите.
druidich
 Аватар для druidich
30 / 30 / 4
Регистрация: 21.05.2012
Сообщений: 428
05.07.2015, 09:41  [ТС]     Почему течет память ? #3
Rius, я правильо понимаю что деструктор выглядит примерно так ?
C++
1
2
while (head->next != tail){ delete head; head = head->next; }
    delete tail;
Rius
 Аватар для Rius
1760 / 1145 / 274
Регистрация: 25.05.2015
Сообщений: 4,072
Записей в блоге: 4
Завершенные тесты: 4
05.07.2015, 18:29     Почему течет память ? #4
М.б. так
C++
1
2
3
4
5
6
7
8
List::~List()
{
  while (head != nullptr) {
    item *del = head;
    head = head->next;
    delete del;
  }
}
druidich
 Аватар для druidich
30 / 30 / 4
Регистрация: 21.05.2012
Сообщений: 428
06.07.2015, 11:13  [ТС]     Почему течет память ? #5
Rius,

Не по теме:

можете глянуть код ? я не могу понять почему до сих пор течет память

Вложения
Тип файла: 7z lab7.7z (1.33 Мб, 2 просмотров)
Rius
 Аватар для Rius
1760 / 1145 / 274
Регистрация: 25.05.2015
Сообщений: 4,072
Записей в блоге: 4
Завершенные тесты: 4
06.07.2015, 13:41     Почему течет память ? #6
Ловите pull request
druidich
 Аватар для druidich
30 / 30 / 4
Регистрация: 21.05.2012
Сообщений: 428
06.07.2015, 17:54  [ТС]     Почему течет память ? #7
Rius, откуда ? )
Rius
 Аватар для Rius
1760 / 1145 / 274
Регистрация: 25.05.2015
Сообщений: 4,072
Записей в блоге: 4
Завершенные тесты: 4
06.07.2015, 18:43     Почему течет память ? #8
Сообщение было отмечено автором темы, экспертом или модератором как ответ
На github, вестимо. В вашем репозитории.

Добавлено через 21 минуту
theTLDLinkedList
druidich
 Аватар для druidich
30 / 30 / 4
Регистрация: 21.05.2012
Сообщений: 428
06.07.2015, 19:13  [ТС]     Почему течет память ? #9
Rius, я так понимаю основная проблема была в не написании конструктора для структуры Item?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2015, 19:14     Почему течет память ?
Еще ссылки по теме:

Почему память массива не освобождается? C++
C++ IDE wxDev-C++, при создании кнопки на форме она почему-то становится во весь экран, почему?
C++ Почему выводится в виде таблицы и почему не работает сортировка

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

Или воспользуйтесь поиском по форуму:
Rius
 Аватар для Rius
1760 / 1145 / 274
Регистрация: 25.05.2015
Сообщений: 4,072
Записей в блоге: 4
Завершенные тесты: 4
06.07.2015, 19:14     Почему течет память ? #10
Да. Смотрите всё коммиты по порядку.
У вас почему-то проверка на tail == head, что типично для кольцевых буферов. А тут связанный список.
Yandex
Объявления
06.07.2015, 19:14     Почему течет память ?
Ответ Создать тему
Опции темы

Текущее время: 06:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru