Во всем примерах если и используют try-catch блок, то только с аллоцированием массива памяти, то есть
new int[size]
. Но мне интересно, нужно ли запихивать в такой же блок единичное аллоцирование, то есть
new int
? В теории, выделенная под процесс память может закончиться, и тогда программа упадет.
Насколько, тогда, безопасно передавать аргумент вот так? Не будет ли утечки памяти? Или стандартом гарантируется, что объект будет инстанцирован и память будет очищена в деструкторе?
try {
std::shared_ptr<int> ptr(new int);
} catch (...) {}