Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2009, 18:13   #1
Порфирий
Новичок
Джуниор
 
Регистрация: 13.12.2009
Сообщений: 1
Вопрос Достали утечки памяти

С этими утечками памяти в C++ просто беда. Посоветуйте, что можно сделать? Может быть есть какие-то специальные утилиты?

Модератор: а может вы приведете код?
Порфирий вне форума Ответить с цитированием
Старый 21.12.2009, 11:40   #2
Danger_world
Новичок
Джуниор
 
Регистрация: 21.12.2009
Сообщений: 3
По умолчанию

Да есть такие спец. утилиты - например хорошая - Deleaker. Уже год пользуюсь.
Danger_world вне форума Ответить с цитированием
Старый 21.12.2009, 12:29   #3
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

valgrind .
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 21.12.2009, 16:54   #4
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Сообщение от Порфирий Посмотреть сообщение
С этими утечками памяти в C++ просто беда. Посоветуйте, что можно сделать? Может быть есть какие-то специальные утилиты?

Модератор: а может вы приведете код?
Вообще действительно код приведите. А проблема не в С++ (хотя отчасти в ней) а в Вас да и в нас. Халатное обращение с ресурсами как раз приводит к такому. Желательно все "глобальные" объекты объявлять через указатель, а не полагаться что за вас компилятор напишет код его создания и определит когда ему уничтожить его. Это из горького опыта вобрал в себя бился неделю пока не поборол все утечки именно таким подходом
BOBAH13 вне форума Ответить с цитированием
Старый 22.12.2009, 11:32   #5
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Цитата:
Сообщение от BOBAH13 Посмотреть сообщение
Желательно все "глобальные" объекты объявлять через указатель, а не полагаться что за вас компилятор напишет код его создания и определит когда ему уничтожить его. Это из горького опыта вобрал в себя бился неделю пока не поборол все утечки именно таким подходом
Желательно не заводить глобальных переменных и наоборот по возможности всё на стеке создавать, а не в куче. Наличие оператора new - потенциальная утечка памяти. Так что работать лучше со стеком и умными указателями.
P.S. Так в одном посте особенности управления ресурсами не опишешь, так что ищите описание особенностей стека и кучи в С++, а так же статейки про умные указатели частенько содержат в себе примеры утечек памяти из-за "вылетевших" исключений и т.п. Кроме того, утечки могут быть и при "опасном" конструкторе, когда при создании объекта класса вылетает исключение, создание объекта отменяется, но не вся выделенная под него память освобождается. В общем, много нюансов и граблей в С++, которые могут привести к утечкам памяти.

Последний раз редактировалось pu4koff; 22.12.2009 в 21:37.
pu4koff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Освобождение памяти VadEr Общие вопросы Delphi 2 17.04.2009 22:23
Нехватка памяти Корчеватель Общие вопросы Delphi 0 17.10.2008 19:03
Очистка памяти в C# darkstarx Общие вопросы .NET 1 14.04.2008 14:48
Распределение памяти Jeni Общие вопросы Delphi 6 31.03.2008 19:59
InterBase 7.1 - утечки памяти. pushkin42 БД в Delphi 2 21.03.2007 16:15