Не вызываются деструкторы локальных объектов с автоматическим временем жизни, если исключение брошено в конструкторе и объект не был полностью сконструирован.
Также деструкторы не вызываются для:
malloc
и не были освобождены).noexcept(false)
и сами бросают исключение во время раскрутки стека (stack unwinding
). В этом случае программа обычно аварийно завершается (std::terminate
).Пример невызова деструктора в конструкторе:
cpp
Не вызываются деструкторы локальных объектов с автоматическим временем жизни, если исключение брошено в конструкторе и объект не был полностью сконструирован.
Также деструкторы не вызываются для:
malloc
и не были освобождены).noexcept(false)
и сами бросают исключение во время раскрутки стека (stack unwinding
). В этом случае программа обычно аварийно завершается (std::terminate
).Пример невызова деструктора в конструкторе:
cpp
Зарегистрируйтесь или войдите, чтобы получить доступ к полным ответам на все вопросы из банка вопросов.