Страница 2 из 2

Добавлено: 25 ноя 2004, 17:28
DeeJayC
Не, unix-образные системы освобождают память, как только завершился процесс

Добавлено: 25 ноя 2004, 18:11
Absurd
Тогда бы мы работу потеряли, господа, потому, что не нужно было бы искать лики перед релизами
Да ну бля... Многие кодеки к DirectShow подсирают в памяти, доступной через интерфейс IMalloc. Например, Ligos Mpeg-2.
Как - то поблуждать по этой памяти и удалить там лишнее не получается.
Я это обошел тем, что загружаю кодеки в отдельный процесс-отстойник, и управляю им через IPC.
Периодически этот отстойник убиваю и загружаю по новой. Судя по диаграмме испльзования памяти из alt + ctrl + del проблема решилось.

Добавлено: 25 ноя 2004, 18:18
Romeo
Значит забываем об операторе delete, Release для COM, стройной идеологии смарт поинтеров и гадим в оперативку, как Бог на душу положит, так получается что ли?

P.S. Матерится, думаю, в эфире не стоит. Чревато.

Добавлено: 25 ноя 2004, 18:36
DeeJayC
Romeo писал(а):Значит забываем об операторе delete, Release для COM, стройной идеологии смарт поинтеров и гадим в оперативку, как Бог на душу положит, так получается что ли?

P.S. Матерится, думаю, в эфире не стоит. Чревато.

А давайте запустим эту фигню в цикле, и посмотрим - можно гадить или нет. Вот это будет точно то, что нужно. fork, например... Так что не...
всё верно - нефиг,нефиг!!!! delete рулит.

Добавлено: 25 ноя 2004, 23:32
ignosya
А если скажем, есть готовый исходник ... хмм ... ну пусть из "книжки" ... который должен работать по идее ... Ну например вот этот: http://www.codenet.ru/progr/video/effect01.php

А не работает ... Жалуется на массив огроменный ... А ведь раньше (пару лет назад), заставлял подобные штуки работать в Borland'e и DJGPP ... А ща ни в том, ни в этом и даже на ваткоме не фурычит ...

В чем причина?

Добавлено: 26 ноя 2004, 11:45
Absurd
Значит забываем об операторе delete, Release для COM, стройной идеологии смарт поинтеров и гадим в оперативку, как Бог на душу положит, так получается что ли?
Я в оператиловку не гажу. Гадит сторонний код, на который я влияния не имею. Другого способа его изолировать я не нашел.
А не работает ... Жалуется на массив огроменный ... А ведь раньше (пару лет назад), заставлял подобные штуки работать в Borland'e и DJGPP ... А ща ни в том, ни в этом и даже на ваткоме не фурычит ...
В Фидо я помню был огроменный флейм на тему того, в какой сегмент линкер должен прописывать массивы: в .data, который включается в бинарь, или в .bss, кторый в бинарь не помещается, но создается при запуске и заполняется нулями. К чему там пришли в конце концов, я не помню.

Добавлено: 29 ноя 2004, 12:51
Eugie
А если скажем, есть готовый исходник ... хмм ... ну пусть из "книжки" ... который должен работать по идее ... А не работает ... Жалуется на массив огроменный ... А ведь раньше (пару лет назад), заставлял подобные штуки работать в Borland'e и DJGPP ... А ща ни в том, ни в этом и даже на ваткоме не фурычит ...
Компилятор тут не при чем, скорее всего проблема в неверно выбранной модели памяти (под DOS). Попробуй huge, должно работать. А еще проще - Win32 Console (или как там это у Ватком называется)

--------
Насчет освобождения памяти. В ОС типа NT, т.е. с изолированными адресными пространствами для процессов, при завершении процесса все связанные с ним ресурсы освобождаются, в т.ч. явно не освобожденная дин.память. Но это происходит только по завершении процесса и не отменяет необходимости освобождать память: если процесс существует длительное время и в нем производятся частые операции дин.размещения памяти, рано или поздно лимит будет исчерпан, если ее корректно не освобождать. Между прочим, типичная ситуация для всевозможных серверов (напр., БД), которые должны/могут работать сутками. Так что без delete никак :)

Добавлено: 09 дек 2004, 18:01
xpymep
Насчет освобождения памяти...Впринципе удалять динамически, я считаю, надо обязательно. Если же нет,то есть спец прога (FreeMem или как-то так) , которая освобождает после завершения проги всю занятую ей память. Достаточно ввести в ini файл путь к приложениям после завершения которых надо освободить память, и прога сама все сделает. Вес проги около 40Кб...
ПыЗы:
Ссылку на прогу не знаю, давно видел ее...

Добавлено: 09 дек 2004, 18:33
Eugie
xpymep, это под какой ОСью?

Добавлено: 14 дек 2004, 18:06
Hawk
Все ресурсы процесса в виндах освобождаются при закрытии этого процесса. Но это совсем не значит, что можно делать все что хочешь и не задумываться ни о чем. Если прога весит в памяти и потихоньку её портит ни чего хорошего из этого в конце концов не выйдет.