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

Двунаправленный связанный список, деструктор, утечка памяти - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Магическое число и ф-ция goto http://www.cyberforum.ru/cpp-beginners/thread944377.html
Помогите усовершенствовать программку ,пожалуйста) После того как угадал число --- Возвращать в начало к выбору 3-х вариантов.Думал как поставить с goto, не особо вышло. И второе как поставить...
C++ Сортировка char -ровой матрицы Имеется char-рова матрица. Пусть ее размер и имя: а. Пусть матрица имеет такие исходные данные: vasya-pupkin\0 bill-hates\0 ivan-ivanov\0 Нужно отсортировать матрицу таким образ чтобы данные... http://www.cyberforum.ru/cpp-beginners/thread944364.html
Булевые операции C++
Есть байт, состоящий из 8 бит. типа unsigned char биты 0-2 одно значение(может быть значение от 1 до 8) биты 3-5 второе(от 1 до 8) биты 6-8 третье(от 1-3). Как это байт конвектировать в 3...
знаки после запятой C++
Здравствуйте, простой вопрос на который я никак не могу найти ответ. Почему после компиляции, программа отказывается показывать знаки после запятой? Грешу на тип переменных, но вроде бы все верно....
C++ О С++, Java, Borland и операторе new http://www.cyberforum.ru/cpp-beginners/thread944325.html
Несколько лет назад программировал задачу для решения головоломки, при этом создавалось (и уничтожалось) до 10млн мелких объектов/сек. Borland был старенький, версия 3.1 Решение на Java было быстрее...
C++ Чтение дат СТЛ Здорова! Есть задачка: "Существуют стандартные способы чтения, записи и представления дат под управлением класса locale. Прочитайте о них в документации к вашей реализации и напишите небольшую... подробнее

Показать сообщение отдельно
VLK
194 / 163 / 12
Регистрация: 05.05.2013
Сообщений: 1,225

Двунаправленный связанный список, деструктор, утечка памяти - C++

27.08.2013, 15:04. Просмотров 777. Ответов 5
Метки (Все метки)

Делаю свой двунаправленный связанный список, основу взял от сюда (сам код, там 3 списка, во всех деструкторы одинаковые) - http://iguania.ru/stati-po-programmirovaniiu/svyazanniy-spisok.html

Там деструктор такой:
C++
1
2
MyList::~MyList()
{ delete head; }
Вопросы:
Но вроде как удаляется только голова, первый узел, а все остальные узлы остаются и тут как раз происходит утечка памяти, правильно я понимаю? Да и еще вопрос, это утечка, она распространяется только на время работы программы или же до того момента, пока я не перезагружу компьютер?

И что бы утечки памяти не было, нужно перебрать все узлы и удалить их, и деструктор должен иметь примерно такой вид:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
MyList::~MyList()
{ 
if (head == NULL) /* если список пуст */
{ delete head; } /* не знаю зачем удаляю нулевой указатель, но думаю это не повредит */
 
else /* если список не пуст, удаляем узел за узлом */
{
Node *temp = head;
Node *tempNext = temp->next;
 
while (temp->next != NULL)
{
delete temp;
temp = tempNext;
tempNext = temp->next;
}
 
delete temp; /* удаляем самый последний узел */
delete tempNext; /* и на всякий случай еще удаляем этот указатель */
}
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru