Re: Исключение в деструкторе - вопрос
От: Centaur Россия  
Дата: 24.05.11 06:37
Оценка:
Здравствуйте, Haccel, Вы писали:

H>Будут ли утечки если выкину исключение в деструкторе объекта, при условии что данный объект всегда создаётся на стеке (не в куче)?


class Evil
{
public:
    ~Evil() { throw 0; }
};

void foo(bool tralala)
{
    Evil evil;

    if (tralala) throw 1;
}


Как всё будет: Сначала создастся экземпляр злого класса. Потом выполнится проверка на траляля, обнаружит, что всё плохо, и выкинет 1. Начнётся размотка стека. Вызовется деструктор злого класса. Выбрасывает ещё и 0 — неопределённое поведение (выброс исключения во время размотки стека из-за другого исключения).

Утечки могут быть, могут не быть, может отформатироваться винчестер или взорваться блок питания.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.