Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
25 / 25 / 14
Регистрация: 05.05.2014
Сообщений: 115
1

Утечка памяти

28.06.2014, 16:03. Показов 726. Ответов 8
Метки нет (Все метки)

Здравствуйте. Есть программа (разбитая на функции) постоянно работающая в цикле и выводящая информацию на консоль. И получается что она жрёт память. за сутки в диспетчере занимаемый объём памяти становится около 30MB.
есть 3 варианта утечки:
- Не очищаю консоль/буфер консоли.
- Динамическая память. Но вроде освобождаю правильно.
- streambuf/stringstream в подпрограммах. Стараюсь использовать .flush(), но ничего не даёт.

Может кто что подскажет?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.06.2014, 16:03
Ответы с готовыми решениями:

Утечка памяти
Привет! написал программму, и не могу разобраться где утекает память. помогите кто сможет. ...

Утечка памяти?
В Лафоре такой код: #include <iostream> using namespace std;...

Утечка памяти
В небольшой программе с использованием OpenCV происходит утечка памяти, с чем связана не понимаю,...

Утечка памяти
Доброго времени суток. Написал оконное приложение. Столкнулся с проблемой - утекает память. ...

8
Don't worry, be happy
17205 / 10083 / 1945
Регистрация: 27.09.2012
Сообщений: 25,162
Записей в блоге: 1
28.06.2014, 16:19 2
Цитата Сообщение от srin Посмотреть сообщение
- Динамическая память. Но вроде освобождаю правильно.
Ну тогда и утечек нет.

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

На основании чего Вам подскажут? Даже телепаты помрут от перенапряжения. Ищите где утекает.
1
25 / 25 / 14
Регистрация: 05.05.2014
Сообщений: 115
28.06.2014, 16:25  [ТС] 3
хорошо, streambuf/stringstream не может жрать память?
0
30 / 30 / 32
Регистрация: 21.06.2014
Сообщений: 81
28.06.2014, 16:38 4
Не видя кода, тяжело что-то вам порекомендовать. Скорее всего вы где-то не освобождаете выделенную память.
1
510 / 272 / 60
Регистрация: 14.12.2010
Сообщений: 548
28.06.2014, 22:17 5
Цитата Сообщение от srin Посмотреть сообщение
- Динамическая память. Но вроде освобождаю правильно.
В Visual Stuidio можно проверить под отладчиком.
2
2725 / 1888 / 560
Регистрация: 05.06.2014
Сообщений: 5,504
28.06.2014, 23:29 6
- Динамическая память. Но вроде освобождаю правильно.
Не освобождать, вместо этого использовать std::map, std::vector, std::list, std::unique_ptr(его и в вектор пихать можно)/std::auto_ptr везде, где только можно. Где нельзя - поправить чтоб было можно и все равно использовать. Если не поможет - обвешиваться проверками на тему "вектор случайно разросся на миллион элементов".
1
Почетный модератор
7385 / 2629 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
28.06.2014, 23:51 7
Valgrind
1
25 / 25 / 14
Регистрация: 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 надо как-то освобождать?
0
:)
Эксперт С++
4769 / 3263 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
30.06.2014, 14:44 9
Цитата Сообщение от srin Посмотреть сообщение
Так всё-таки экземпляры/объекты классов streambuf/stringstream надо как-то освобождать?
Не зная точно как Вы их создаете - нельзя дать однозначного ответа.
Может Вы делаете что-то такое:
C++
1
ptr = new stringstream;
Тогда конечно нужно потом сделать
C++
1
delete ptr;
В случае автоматических переменных все необходимые действия будут также выполнены автоматически при вызове деструктора (который, в свою очередь, вызывается при выходе переменной из области видимости).
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.06.2014, 14:44

Утечка памяти
Помогите с кодом, вот написал реализацию стека по заданию. Преподаватель попросил проверить, верно...

утечка памяти
есть функция генерирующая массив из строк, которые могут быть составлены из символов alph. При...

Утечка памяти
Взял листинг кода из книги Стивен Прата Язык программирования С++. Меня терзают смутные сомнения...

Утечка памяти
Подскажите, где здесь может возникать утечка памяти? Вроде везде, где можно - чищу... ...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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