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

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

Войти
Регистрация
Восстановить пароль
 
Гурген
13 / 0 / 0
Регистрация: 16.11.2014
Сообщений: 40
#1

Есть ли утечка памяти в list - C++

20.11.2014, 12:33. Просмотров 179. Ответов 5
Метки нет (Все метки)

Здравствуйте, форумчане, есть вопрос насчет освобождения памяти в list, каждый элемент которого представлен структурой.Хотел узнать правильно ли освобождаю память и нет ли утечки?
Вот часть кода:
C++
1
2
3
4
5
6
7
extern struct List
{
    string mgramma; // m-грамма
    int count;          // количество повторений m-граммы
};
extern list<List> *List1;   // Указатель на список, каждый элемент которого представлен структурой List
extern int m;               // количество букв в m-грамме
А вот сам мэин(представлю только часть кода, так как интересует только освобождение памяти):
C++
1
2
3
4
5
6
7
case 1: //Загрузка файла
            delete List1;
            List1 = new list<List>;
            cout << "Введите количество букв в m-грамме - ";
            cin >> point_1;
            cin.clear();
            cin.ignore(cin.rdbuf()->in_avail());
Правильно ли в данном случае освобождаю память, или же нужно использовать clear, не могу разобраться, помогите.Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2014, 12:33     Есть ли утечка памяти в list
Посмотрите здесь:

Утечка памяти C++
Утечка памяти?! C++
Есть ли утечка памяти? C++
Есть ли утечка памяти в этом случае? C++
C++ Утечка памяти в
C++ утечка памяти
Утечка памяти C++
C++ утечка памяти
C++ Утечка памяти
C++ Утечка памяти?
C++ Утечка памяти
Утечка памяти C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
20.11.2014, 12:35     Есть ли утечка памяти в list #2
Гурген, Правильно. delete List1 вызовет деструктор std::list, который очистит свою память, после чего будет освобождена память, которую занимает List1.
Гурген
13 / 0 / 0
Регистрация: 16.11.2014
Сообщений: 40
20.11.2014, 12:39  [ТС]     Есть ли утечка памяти в list #3
ForEveR, а альтернативным вариантом можно использовать clear?
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
20.11.2014, 12:44     Есть ли утечка памяти в list #4
Гурген, А смысл? Можно вызвать
C++
1
2
List1->clear();
delete List1;
Но это предельно бессмысленно, delete звать придется в любом случае, т.к. List1 указатель и память под него выделена динамически. Кстати, зачем вообще использовать указатель на список?
Гурген
13 / 0 / 0
Регистрация: 16.11.2014
Сообщений: 40
20.11.2014, 12:50  [ТС]     Есть ли утечка памяти в list #5
ForEveR, это задание такое, надо было именно так реализовать, просто с освобождением проблемы: именно в том, что не знаю как проверить, есть ли утечка, в гугле много всего понаписано, а конкретики нет.
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
20.11.2014, 13:05     Есть ли утечка памяти в list #6
Гурген, Если на каждый new использованный в программе вызван корректный delete - утечки быть не может. Искать утечку в стандартной библиотеке глупая идея, ее там не может быть.
Yandex
Объявления
20.11.2014, 13:05     Есть ли утечка памяти в list
Ответ Создать тему
Опции темы

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