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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
druidich
30 / 30 / 4
Регистрация: 21.05.2012
Сообщений: 433
#1

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

05.07.2015, 08:36. Просмотров 422. Ответов 9
Метки нет (Все метки)

пишу небольшой класс по работе с двусвязными списками


Не по теме:


часть класса

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     Почему течет память ?
Посмотрите здесь:

Почему память массива не освобождается? - C++
В выводе *b должна быть ересь, но на самом деле коректно выводит цифру &quot;3&quot;. #include &lt;iostream&gt; using namespace std; void func(int...

Ругается на деструктор (выделял динамически память). Почему? - C++
Вот код: #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;time.h&gt; #include &lt;stdlib.h&gt; class MClass { private: int...

Почему не очищает память, выделенную под массив структур - C++
#include &lt;cstdlib&gt; #include &lt;iostream&gt; using namespace std; const int ar_size=20; struct CandyBar { char name; double...

Почему не получается освободить память, выделенную для переменных в структуре? - C++
не получается освободить память, выделенную для переменных в структуре. Помогите пожалуйста, код ниже. #include &lt;iostream&gt; #include...

С++ течет при наследовании - C++
Если был создан класс где его поля размещались в стеке (Foo) и унаследован классом (Foo1) который создается динамически. Как...

Почему указатель теряет свои значения после выхода с метода, память выделена динамически - C++
#include &lt;iostream&gt; using namespace std; void sqr( int* a, int length ); int main() { int *a = new int; int length =...

Память - C++
Здравствуйте, пишу программу, суть такова: Нужно строки из файла отсортировать по длине строки, а строки равной длины отсортировать по...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rius
Эксперт .NET
2338 / 1544 / 362
Регистрация: 25.05.2015
Сообщений: 5,191
Записей в блоге: 8
Завершенные тесты: 4
05.07.2015, 08:43     Почему течет память ? #2
Деструктор пропишите.
druidich
30 / 30 / 4
Регистрация: 21.05.2012
Сообщений: 433
05.07.2015, 09:41  [ТС]     Почему течет память ? #3
Rius, я правильо понимаю что деструктор выглядит примерно так ?
C++
1
2
while (head->next != tail){ delete head; head = head->next; }
    delete tail;
Rius
Эксперт .NET
2338 / 1544 / 362
Регистрация: 25.05.2015
Сообщений: 5,191
Записей в блоге: 8
Завершенные тесты: 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
30 / 30 / 4
Регистрация: 21.05.2012
Сообщений: 433
06.07.2015, 11:13  [ТС]     Почему течет память ? #5
Rius,

Не по теме:

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

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

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

Динамическая память - C++
Всем привет!!! взникла проблема с выполнением строки K=A++; при выполнении printf(&quot;\n__________ %d\n&quot;,K.gasaaa()); получаю левые...

Динамическая память - C++
Добрый вечер! Возникла у меня такая проблемка, нужно от статической памяти перейти к динамической. То ли уже голова не варит, то ли руки не...

CMOS память - C++
Уважаемые программисты подскажите пожалуйста, что не так в программе, не компилирует, ошибка на outp и inp #include &lt;stdio.h&gt; #include...

Освободится ли память? - C++
voin f(char const* str) { ... } for (int i = 0; i &lt; 100; i++) f(&quot;Hello world!&quot;); Это хоть и указатель, но строка...

динамическая память.... - C++
Ввести двухмерном массив, для работы с массивом использовать указатель. Массив разместить в динамической памяти. Определение суммы...


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

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

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