![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Безопасное аварийное завершение приложения
DevilDevil © (2006-08-25 01:46:00)При возникновении каких либо даже серьёзных ошибок в приложении из под Delphi, достаточно нажать Ctrl+F2, чтобы приложение закрылось, все деструкторы были выполнены (как мне кажется), не произошло утечек памяти. Существуют ли вообще такие методы (а в частности, является ли такой процедура Halt), позволяющие безопасно, без утечек ресурсов, завершающих приложение хотя бы из среды?
Fay (2006-08-25 21:42:00) [41]> Я чё то не догоняю...
> Я не прав?
Прав.
Чапаев (2006-08-25 19:40:00) [42]> отпереть по идее ни кто не имеет права, даже Винда
Прокурору о своих правах расскажешь... Или Флёнову...
DevilDevil (2006-08-25 19:33:00) [43]> GrayFace © (25.08.06 17:52) [7]
это точно!
Я чё то не догоняю... Допустим занял [у Винды] я 40 мегабайт из Кучи, приложение завершилось по Ctrl+F2, занимаемые 40 мегабайт так и остались запертыми... и отпереть по идее ни кто не имеет права, даже Винда. Это я и называю утечкой памяти. Говоря о классах и деструкторах... честно говоря имел ввиду, что память под них освобождается [в Куче]. Тоже самое наверняка и с видеопамятью, если OpenGL-приложение завершилось со страшнейшей руганью. Я не прав?
GrayFace (2006-08-25 17:52:00) [44]Атомы остаются. Причем в любой проге, использующей VCL есть 2 атома. Так что, если 32767 раз нажать Ctrl+F2, по идее ни одно VCL приложение уже не запустится до перезагрузки.
guav (2006-08-25 12:46:00) [45]> По сути - твой пост о MemProof. Что в нём отбражается -
> я не знаю, посему молчу.
Там отображаются количество открытые программой хендлов ресурсов (в т.ч. хендлы файлов, UI и GDI), выделенные блоки памяти. После завершения отображаются те которые не были освобождены явно. Это позволяет убедится в отсутствии утечек и упрощает их поиск при их наличии.
Германн (2006-08-25 02:55:00) [46]
> guav © (25.08.06 02:36) [4]
>
> > Если приложение завершается, то о каких утечках идёт речь?
>
>
> О тех что например в MemProof отображаются. Я и говорю,
> что все ресурсы приложение вернёт, а куда оно денется, но
> обычно больше пользы от кода не имеющего утечек, т.к. его
> многократное выполнение не приведёт к перерасходу/исчерпанию
> ресурсов.
>
По сути - твой пост о MemProof. Что в нём отбражается - я не знаю, посему молчу.
guav (2006-08-25 02:36:00) [47]> Если приложение завершается, то о каких утечках идёт речь?
О тех что например в MemProof отображаются. Я и говорю, что все ресурсы приложение вернёт, а куда оно денется, но обычно больше пользы от кода не имеющего утечек, т.к. его многократное выполнение не приведёт к перерасходу/исчерпанию ресурсов.
Германн (2006-08-25 02:07:00) [48]
> guav © (25.08.06 02:02) [2]
>
> > безопасно, без утечек ресурсов, завершающих приложение
> хотя
> > бы из среды
>
> Без утечек для приложения - нет, все ресурсы освобождать
> вручную.
Если приложение завершается, то о каких утечках идёт речь?
guav (2006-08-25 02:02:00) [49]> безопасно, без утечек ресурсов, завершающих приложение хотя
> бы из среды
Без утечек для приложения - нет, все ресурсы освобождать вручную.
Без утечек для ОС - любой, хоть Ctrl+F2, способ, вся память и ресурсы возвращаются ОС (ну кроме особых случаев типа объект в буфере обмена, который, естественно, останется там).
guav (2006-08-25 01:58:00) [50]> все деструкторы были выполнены (как мне кажется), не произошло
> утечек памяти.
ага. щаз.
_ничего_ не выполняется.
и не надо. так и задумано.
> является ли такой процедура Halt
нет.
Halt выполняет все финализации модулей и финализацию переменных с управляемым временем жизни, деструкторы автоматом не вызываются.