![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| mspuz |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 20.6.2005 Где: Ногинск Репутация: нет Всего: нет |
Всем привет!
Всегда не задумываясь использовал ф-ию Exit, если мне нужно было покинуть ф-цию в нужный момент. Но тут копался в исходниках одного "старожилы" и обнаружил, что программист шёл на что угодно, но ни когда не использовал Exit. Поспрашивал и услышал, что это действительно не рекомендуется, но почему - сказать не смогли. Действительно ли это так плохо и главное почему?! |
|||
|
||||
| ama_kid |
|
|||
![]() АСУТП-кодер ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1460 Регистрация: 5.3.2007 Где: Москва Репутация: 15 Всего: 95 |
например, необходимо следить за корректностью освобождения выделенной памяти, если такая была. Зачастую бездумный вызов exit может приводить к утечкам памяти, а обдуманный - к избыточности кода. Но по большому счету - имхо это вопрос привычки, из разряда религиозных войн...
-------------------- самурай без меча подобен самураю с мечом, но только без меча |
|||
|
||||
| mspuz |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 20.6.2005 Где: Ногинск Репутация: нет Всего: нет |
ama_kid, А "естественный" выход из ф-ции (достигнув конца end) отслеживает утечку памяти? По моему нет. Так что следить надо всегда и exit тут ни при чем.
|
|||
|
||||
| ama_kid |
|
|||
![]() АСУТП-кодер ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1460 Регистрация: 5.3.2007 Где: Москва Репутация: 15 Всего: 95 |
-------------------- самурай без меча подобен самураю с мечом, но только без меча |
|||
|
||||
| Shaggy |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 2.5.2007 Где: г.Ижевск Репутация: 3 Всего: 5 |
ничего не дублируется и всё корректно освобождается... |
||||
|
|||||
| Coderr |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 234 Регистрация: 27.1.2006 Где: Vesnet Репутация: 0 Всего: 0 |
Чего-то я сомневаюсь о правильности кода и смысла его вообще.
Строка
не выполнится никогда. А для создания TStringList надо заводить переменную и уже ей присваивать:
Это сообщение отредактировал(а) Coderr - 19.1.2008, 18:07 --------------------
Кодинг - это стиль жизни! |
||||
|
|||||
| THandle |
|
|||
![]() Хранитель Клуба Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 65 Всего: 372 |
||||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Более красиво решать при помощи защищенных секций. Для досрочного завершения, генерим исключение и все ресурсы корректно освобождаются -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 62 Всего: 128 |
что это такое? по поводу сабжа - пользую exit (в сочетании с try..finally) в разумных ситуациях без оглядки) и считаю это нормальным подходом) -------------------- There are always someone smarter than you... |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Это как раз про них. Добавлено через 3 минуты и 26 секунд Их еще защищенными блоками зовут иногда. Добавлено через 6 минут и 19 секунд Проблема exit в разрушении логики. При досрочном выходе нужно помнить чего где и когда создал или мог не создать или создал после того как писал фрагмент с exit. Функцию дополнил созданием объекта, а при выходе по exit забыл добавить удаление, вот и утечка. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 62 Всего: 128 |
пишу обычно так:
очень так вполне удобно -------------------- There are always someone smarter than you... |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Тоже вариант.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 49 Всего: 76 |
хе! незнал что при exit блок finally все равно выполняется
-------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 62 Всего: 128 |
все допустимо в разумных пределах...
имхо лучше уж exit, чем goto) -------------------- There are always someone smarter than you... |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |