![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| FCM |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 461 Регистрация: 30.3.2009 Репутация: нет Всего: 9 |
При выходе из программы по abort или exit, как известно локальные объекты не удаляются.
Делает ли это Windows при закрытии соответствующего процесса/потока. Т.е. правильно ли следующее утверждение или нет: "При использовании С++ исключений объекты удаляются средствами С++, а при использовании abort или exit веcь мусор уберет Windows ???" |
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
также, как известно, можно сделать так, чтобы они удалялись.
Это сообщение отредактировал(а) zim22 - 4.10.2009, 11:06 |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
FCM, о каких объектах речь?
при закрытии программы все что было в памяти - удаляется |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
не все, бывают и исключения |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
Lazin, какие?
разве что объект создал файл, а в деструкторе должен был его удалить |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
Global Atom-ы и COM объекты иногда не могут быть удалены после завершения процесса, может еще что-нибудь
|
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 12 Всего: 459 |
Память выделенная в драйвере сама не освобождается, даже если драйвер выгрузили. Добавлено через 52 секунды Кстати если юзать SEH то не деструкторы локальных объектов могут быть не вызванными. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
||||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
Alexeis, SEH позволяет делать finally, и возвращать управление в любое место кода
|
|||
|
||||
| FCM |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 461 Регистрация: 30.3.2009 Репутация: нет Всего: 9 |
Обычные объекты пользовательского класса, например, реализующего динамический массив. В одной (видимо учебной) программе увидел реализацию такого массива, причем в качестве контроля правильности значения индекса используется что-то типа if( ...) abort(); Понятно, что с С++ исключениями правильнее. Вопрос в другом, а почему abort, а не exit - есть ли разница? В любом случае ОС зачистит все или нет? Это сообщение отредактировал(а) FCM - 4.10.2009, 15:20 |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
FCM, все объекты в памяти которые принадлежат приложению, будут удалены
|
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
угу, есть. при abort не вызываются деструкторы статических объектов. |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
система не удаляет никаких объектов, она освобождает ресурсы, которые программа не освободила (память, дескрипторы открытых файлов)
удаление объекта предусматривает вызов деструктора, это может сделать только код программы, т.к. ОС не может знать про деструкторы (на уровне ассемблера их уже нет) -------------------- qqq |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |