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

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

Войти
Регистрация
Восстановить пароль
 
srin
25 / 25 / 11
Регистрация: 05.05.2014
Сообщений: 115
#1

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

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

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

Может кто что подскажет?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.06.2014, 16:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Утечка памяти (C++):

Утечка памяти - C++
Помогите с кодом, вот написал реализацию стека по заданию. Преподаватель попросил проверить, верно ли я использую delete, ибо mas в классе...

Утечка памяти - C++
Господа подскажите как узнать какая п̶а̶д̶л̶а̶ переменная жрет память? Или как посмотреть сколько вообще переменных и объектов находятся в...

Утечка памяти - C++
#include "stdafx.h" #include <iostream> #include "ArrayOperation.h" using namespace std; int main() { int...

Утечка памяти - C++
Доброго времени суток! Столкнулся с проблемой утечки памяти! Будь у меня маленькая программка, выловил бы легко, но в 2000 строк кода все...

Утечка памяти - C++
Где я допустил ее(утечку)? #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <cstring> #include <string> class...

Утечка памяти - C++
Не могу понять как избежать утечки памяти в своей программе... привожу кусок в одном из мест где на мой взгляд она происходит... Array...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Croessmah
Модератор
Эксперт CЭксперт С++
13133 / 7396 / 828
Регистрация: 27.09.2012
Сообщений: 18,227
Записей в блоге: 3
Завершенные тесты: 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
321 / 243 / 43
Регистрация: 14.12.2010
Сообщений: 464
28.06.2014, 22:17 #5
Цитата Сообщение от srin Посмотреть сообщение
- Динамическая память. Но вроде освобождаю правильно.
В Visual Stuidio можно проверить под отладчиком.
Renji
1901 / 1299 / 291
Регистрация: 05.06.2014
Сообщений: 3,718
28.06.2014, 23:29 #6
- Динамическая память. Но вроде освобождаю правильно.
Не освобождать, вместо этого использовать std::map, std::vector, std::list, std::unique_ptr(его и в вектор пихать можно)/std::auto_ptr везде, где только можно. Где нельзя - поправить чтоб было можно и все равно использовать. Если не поможет - обвешиваться проверками на тему "вектор случайно разросся на миллион элементов".
Vourhey
Почетный модератор
6478 / 2253 / 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 надо как-то освобождать?
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
30.06.2014, 14:44 #9
Цитата Сообщение от srin Посмотреть сообщение
Так всё-таки экземпляры/объекты классов streambuf/stringstream надо как-то освобождать?
Не зная точно как Вы их создаете - нельзя дать однозначного ответа.
Может Вы делаете что-то такое:
C++
1
ptr = new stringstream;
Тогда конечно нужно потом сделать
C++
1
delete ptr;
В случае автоматических переменных все необходимые действия будут также выполнены автоматически при вызове деструктора (который, в свою очередь, вызывается при выходе переменной из области видимости).
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.06.2014, 14:44
Привет! Вот еще темы с ответами:

утечка памяти - C++
доброго времени суток Уважаемые форумчане, помогите пожалуйста разобраться с утечками памяти есть массив с геометрическими фигурами. ...

Утечка памяти?! - C++
Джесс Либерти и Дэвид Хорват "Освой самостоятельно С++ за 24 часа", вырезка из листинга 15.4 (стр 233): Строка 26 - Утечка памяти?...

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

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
30.06.2014, 14:44
Ответ Создать тему
Опции темы

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