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

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

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

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