|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
20.06.2016, 21:26 | #11 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
Либо не вызывать функции, которые могут вызвать исключение, либо перехватывать исключения внутри деструктора.
К примеру, зачем вам вызывать close в деструкторе? Сокет класс будет разрушен и сам позаботится о себе, а если он этого не делает, то грош цена такому классу. |
21.06.2016, 01:08 | #12 |
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
|
Коротко - исключения никогда не должны вылетать из деструктора.
Мало того, в новых стандартах деструкторы по дефолту являются noexcept, соответственно, если вылетит исключение, то будет вызван std::terminate, который приведет (по дефолту) к вызову std::abort и приложение, фактически, аварийно завершится. Последний раз редактировалось Croessmah; 21.06.2016 в 01:11. |
21.06.2016, 21:30 | #13 | |||
БохЪ
Форумчанин
Регистрация: 30.09.2009
Сообщений: 724
|
Цитата:
Цитата:
Цитата:
В планах порабощение вселенной...
Последний раз редактировалось zumm; 21.06.2016 в 21:35. |
|||
21.06.2016, 21:38 | #14 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Так где утечки-то? Откуда они возьмутся?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
21.06.2016, 21:41 | #15 |
БохЪ
Форумчанин
Регистрация: 30.09.2009
Сообщений: 724
|
Так у нас исключение в деструторе произошло. Единственный способ не выпустить его наружу и продолжить работать - проигнорировать исключение. А значит память не будет освобождена.
На примере из первого поста в теме: close не вызван, сокет не убит, память утекла.
В планах порабощение вселенной...
|
21.06.2016, 22:03 | #16 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Какое именно исключение у вас может выпасть?
Если функция закрытия сокета вернула ошибку, то вы в любом случае не можете с этим ничего сделать кроме записи в лог или падения. Про наличие утечки зависит от причины ошибки/исключения. Может быть освобождать и нечего раз он не смог?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
21.06.2016, 23:02 | #17 | |
БохЪ
Форумчанин
Регистрация: 30.09.2009
Сообщений: 724
|
Цитата:
Но вот нам делать, если, к примеру, при попытке закрытия сокета нам говорят, что он занят? Подождать? А сколько подождать? И есть ли у нас вообще право ждать?
В планах порабощение вселенной...
|
|
22.06.2016, 01:07 | #18 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
|
22.06.2016, 10:02 | #19 | |
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
|
Цитата:
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Исключения c# | CROWN | C# (си шарп) | 3 | 21.12.2014 18:29 |
Исключения в Qt | iukash | Qt и кроссплатформенное программирование С/С++ | 6 | 16.04.2011 18:54 |
Исключения C++ | Impuls1989 | Помощь студентам | 2 | 04.03.2011 00:51 |
Исключения | yurik1982 | Фриланс | 9 | 16.02.2010 00:34 |
Исключения | Rifler | Общие вопросы Delphi | 5 | 12.11.2008 00:29 |