Здравствуйте, Haccel, Вы писали:
H>Будут ли утечки если выкину исключение в деструкторе объекта, при условии что данный объект всегда создаётся на стеке (не в куче)?
class Evil
{
public:
~Evil() { throw 0; }
};
void foo(bool tralala)
{
Evil evil;
if (tralala) throw 1;
}
Как всё будет: Сначала создастся экземпляр злого класса. Потом выполнится проверка на траляля, обнаружит, что всё плохо, и выкинет 1. Начнётся размотка стека. Вызовется деструктор злого класса. Выбрасывает ещё и 0 — неопределённое поведение (выброс исключения во время размотки стека из-за другого исключения).
Утечки могут быть, могут не быть, может отформатироваться винчестер или взорваться блок питания.