daniel_pr
@daniel_pr

Выдаст ли ошибку при аллоцировании памяти?

Во всем примерах если и используют try-catch блок, то только с аллоцированием массива памяти, то есть new int[size]. Но мне интересно, нужно ли запихивать в такой же блок единичное аллоцирование, то есть new int? В теории, выделенная под процесс память может закончиться, и тогда программа упадет.

Насколько, тогда, безопасно передавать аргумент вот так? Не будет ли утечки памяти? Или стандартом гарантируется, что объект будет инстанцирован и память будет очищена в деструкторе?

try {
  std::shared_ptr<int> ptr(new int);
} catch (...) {}
  • Вопрос задан
  • 97 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Mercury13
Программист на «си с крестами» и не только
Нормально.
Аварии в деструкторе и конструкторе — дела сложные, но возможные.
Но тут ни того, ни другого не будет. До вызова конструктора просто не дойдёт.
} catch (const std::bad_alloc&) {}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы