Старый параноик
Сообщения: 2423
Благодарности: 85
|
Профиль
|
Отправить PM
| Цитировать
ИМХО, не стоит пользоваться exit() в C++ . Это, извините, признак плохого тона. Все функции (процедуры), вплоть до той самой, которая требует немедленного выхода из программы, должны проверять состояние (возвращаемое значение) вызываемых фонкций и, в свою очередь, сообщать (немедленным возвратом с кодом ошибки) об этом тем, кто вызвал их самих. При этом деструкторы классов сработают тут же , а о "локальных объектоах" надо позаботиться.
Но это мое личное мнение. Если так ломает проверять состояние всех функций, просто делай exit() и не заморачивайся. Память, выделенная приложению, будет очищена и возвращена операционной системе. Так что не играет никакой роли, сработали деструкторы, не сработали... Пользователь все равно увидит сообщение об ошибке, а твое оно или системное, его уже волновать не будет.
Конечно, не все так просто:
1. В ОС, не поддерживающих разделение памяти между процессами (DOS), память будет "утекать".
2. Файлы, открытые объектом, желательно закрывать, иначе могут возникнуть файлы, которые "система не может удалить" (Win95).
3. Динамическая библиотека, в пределах которой сделан выход, уронит все приложение (*nix).
Поэтому, ИМХО, стоит подумать еще раз, а так ли уж и "невозможно" вернуться и вызвать деструкторы?
|