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

Утечка памяти - C++

Восстановить пароль Регистрация
 
srin
25 / 25 / 11
Регистрация: 05.05.2014
Сообщений: 115
28.06.2014, 16:03     Утечка памяти #1
Здравствуйте. Есть программа (разбитая на функции) постоянно работающая в цикле и выводящая информацию на консоль. И получается что она жрёт память. за сутки в диспетчере занимаемый объём памяти становится около 30MB.
есть 3 варианта утечки:
- Не очищаю консоль/буфер консоли.
- Динамическая память. Но вроде освобождаю правильно.
- streambuf/stringstream в подпрограммах. Стараюсь использовать .flush(), но ничего не даёт.

Может кто что подскажет?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.06.2014, 16:03     Утечка памяти
Посмотрите здесь:

Утечка памяти C++
Утечка памяти?! C++
C++ Утечка памяти
Утечка памяти C++
Утечка памяти C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11836 / 6815 / 770
Регистрация: 27.09.2012
Сообщений: 16,898
Записей в блоге: 2
Завершенные тесты: 1
28.06.2014, 16:19     Утечка памяти #2
Цитата Сообщение от srin Посмотреть сообщение
- Динамическая память. Но вроде освобождаю правильно.
Ну тогда и утечек нет.

Цитата Сообщение от srin Посмотреть сообщение
Может кто что подскажет?
вот у меня в программе где-то исключение вылетает. Может подскажете?

На основании чего Вам подскажут? Даже телепаты помрут от перенапряжения. Ищите где утекает.
srin
25 / 25 / 11
Регистрация: 05.05.2014
Сообщений: 115
28.06.2014, 16:25  [ТС]     Утечка памяти #3
хорошо, streambuf/stringstream не может жрать память?
BatonPro
30 / 30 / 24
Регистрация: 21.06.2014
Сообщений: 81
28.06.2014, 16:38     Утечка памяти #4
Не видя кода, тяжело что-то вам порекомендовать. Скорее всего вы где-то не освобождаете выделенную память.
EVP
314 / 236 / 41
Регистрация: 14.12.2010
Сообщений: 457
28.06.2014, 22:17     Утечка памяти #5
Цитата Сообщение от srin Посмотреть сообщение
- Динамическая память. Но вроде освобождаю правильно.
В Visual Stuidio можно проверить под отладчиком.
Renji
1535 / 983 / 240
Регистрация: 05.06.2014
Сообщений: 2,963
28.06.2014, 23:29     Утечка памяти #6
- Динамическая память. Но вроде освобождаю правильно.
Не освобождать, вместо этого использовать std::map, std::vector, std::list, std::unique_ptr(его и в вектор пихать можно)/std::auto_ptr везде, где только можно. Где нельзя - поправить чтоб было можно и все равно использовать. Если не поможет - обвешиваться проверками на тему "вектор случайно разросся на миллион элементов".
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
28.06.2014, 23:51     Утечка памяти #7
Valgrind
srin
25 / 25 / 11
Регистрация: 05.05.2014
Сообщений: 115
30.06.2014, 14:20  [ТС]     Утечка памяти #8
Всем спасибо за ответы. Правда ничем не пользовался. Переписывал немного код и нашёл, что в одном месте забыл вставить mysql_free_result. Скорее всего из-за этого и была утечка памяти. По крайней мере программа теперь так сильно не пухнет.

Цитата Сообщение от Renji Посмотреть сообщение
Не освобождать, вместо этого использовать std::map, std::vector, std::list, std::unique_ptr(его и в вектор пихать можно)/std::auto_ptr везде, где только можно. Где нельзя - поправить чтоб было можно и все равно использовать. Если не поможет - обвешиваться проверками на тему "вектор случайно разросся на миллион элементов".
Я к сожалению не программист. И у меня всего-лишь два динамических массива. мне проще через new, чем учить непонятные для меня слова, которые вы написали. Наступит время, конечно, может и выучу, но пока что так.

p.s. Так всё-таки экземпляры/объекты классов streambuf/stringstream надо как-то освобождать?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.06.2014, 14:44     Утечка памяти
Еще ссылки по теме:

утечка памяти C++
C++ Утечка памяти в
Утечка памяти C++

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

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
30.06.2014, 14:44     Утечка памяти #9
Цитата Сообщение от srin Посмотреть сообщение
Так всё-таки экземпляры/объекты классов streambuf/stringstream надо как-то освобождать?
Не зная точно как Вы их создаете - нельзя дать однозначного ответа.
Может Вы делаете что-то такое:
C++
1
ptr = new stringstream;
Тогда конечно нужно потом сделать
C++
1
delete ptr;
В случае автоматических переменных все необходимые действия будут также выполнены автоматически при вызове деструктора (который, в свою очередь, вызывается при выходе переменной из области видимости).
Yandex
Объявления
30.06.2014, 14:44     Утечка памяти
Ответ Создать тему
Опции темы

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