![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
MaxWave |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 8.3.2006 Репутация: нет Всего: нет |
Но по выходе из программы все становится во круги своя. Почему занятая мной память система очищает? Где же утечки памяти? |
|||
|
||||
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
потомучто это свойство ОС. Память занимаемая твоей программой является таковой, только то время пока программа живет.
|
|||
|
||||
MaxWave |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 8.3.2006 Репутация: нет Всего: нет |
Тогда в чем смысл утечек памяти???
|
|||
|
||||
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
в том, что программы работают долго, и не выполняются один раз в main $)
|
|||
|
||||
MaxWave |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 8.3.2006 Репутация: нет Всего: нет |
т.е. система гарантирует что АБСОЛЮТНО ВСЯ память, которую использовало приложение, будет освобождена при выходе из программы?
|
|||
|
||||
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
да
|
|||
|
||||
Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 4 Всего: 39 |
В том утечки памяти мешают работе твоей же программе (есть утечки - жди глюка проги), ну и в глобальном случае, могут быстро отъедать память у винды. -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
MaxWave |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 8.3.2006 Репутация: нет Всего: нет |
Ясно, всем спасибо. Я просто думал что утечки это именно утрата памяти из за неправильной работы риложния, даже после завершения.
|
|||
|
||||
Lycifer |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 4.11.2007 Репутация: нет Всего: нет |
В современных ос вся память чистится после завершение программы. Вы привели пример когда память создается один раз и живет все продолжительность программы. Есть статья (к сожалению автора не помню) в которой он обсуждает вопрос что считается утечкой памяти , а что нет, к примеру patern singleton , создается объект один раз и используется все время работы программы, та что можно не делать освобождение памяти, но это считается плохим стилем программирование.
|
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
||||
|
||||
Lycifer |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 4.11.2007 Репутация: нет Всего: нет |
mes,vinter - я же не писал что singleton плох, я писал что не освобождение памяти плохой стиль программирования.
P.S. Синголтон можно и освобождать, я приводил это в пример. |
|||
|
||||
EvilsInterrupt |
|
|||
Executables research ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1019 Регистрация: 14.7.2007 Где: Железнодорожный, МО, Россия Репутация: 2 Всего: 9 |
От таких ответов и мне не понятно что такое "Утечка памяти". Попробую пояснить, что такое утечка памяти для системного программиста.
Следуюет понимать, что современные программы это запускаемые исполнимые модули, в которых указываются нужные значения, к примеру стартовое значение стека, его максимум, стартовое значение памяти, ее максимум и ряд других. Когда линкер строит исполнимый модуль, он не может знать всех мыслимых ситуаций, в которых возможно окажется программа и ставит свойства файла по дефолту! Что происходит когда программа запросила память, а стартовое значение исчерпано ? Правильно, его выделяет диспетчер памяти операционой системы. Что произойдет если программа вдруг освобождает память ? Правильно, диспетчер памяти не освобождает его до тех пор пока программа не завершится! Это не сложно проверить, запустить какую нить программу с большим циклом, увидеть что компьютер стал реагировать менее гибко и потом убить через диспетчер задач, после этого увидим что система начала откликаться. Так вот ситуация, когда программа содержит код в котором заказывается память, но вдруг не освобождаясь, а по логике кода должна, но заказывается еще, возникает ситуация. Эта ситуация называется утечкой памяти. Еще раз, когда приложение заказывает и заказывает и заказывает и заказывает .... , т.е. системе сложно обслуживать другие программы, т.к. все больше и больше расходуется кол-во времени на обслуживание программы с большим кол-вом памяти. Потому что мало того нужно востановить процесс, нужно настроить контексты потоков, нужно подгрузить память из своп-файла, настроить системные таблицы по работе с памятью, ну и ряд других организационных вопросов. Мои слова выше предназначены только для пояснение того, что примерно происходит при выполнении программы. Правильное и точное понимание процессов описаны не мною тут, а такими людьми как Марк Руссинович или Джефри Рихтер. |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
![]()
![]() |
|||
|
||||
EvilsInterrupt |
|
|||
Executables research ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1019 Регистрация: 14.7.2007 Где: Железнодорожный, МО, Россия Репутация: 2 Всего: 9 |
mes,
ты прав не до писал мысль. под выделенной тобою текстом следует читать: цикл где выделяется память,но не освобождается память, простенький пример:
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |