Как проверить ошибки выделения памяти с помощью нового оператора?

Совсем недавно я переключил язык моего проекта на использование C ++ с C . В C я использовал malloc и после этого проверяю, успешно ли был выполнен malloc, но в C ++ я использую 'new' для выделения памяти и хотел бы знать, как вы обычно проверяете сбой выделения памяти.

Из моего поиска в Google , Я не видел ничего подобного.

char *buf = new (nothrow)char[10];

Я также видел следующее.

try{} catch(bad_alloc&) {}

А как насчет следующего? Я использую некоторые подпрограммы библиотеки Chrome для использования интеллектуальных указателей.

Например, у меня есть следующий код.

scoped_array<char> buf(new char[MAX_BUF]);

Замечательно использовать интеллектуальные указатели, но я просто не уверен, как мне проверить, выделено ли выделение памяти Был успешен. Нужно ли мне разбивать на два отдельных оператора nothrow или try / catch? Как вы обычно выполняете эти проверки в C ++?

Мы будем благодарны за любые советы.

26
задан gsamaras 30 May 2016 в 06:31
поделиться