Совсем недавно я переключил язык моего проекта на использование С++ из C. С C я использовал malloc, и после этого я проверяю, был ли malloc успешным, но с С++ я использую "новый" для выделения памяти, и я хотел бы знать, как вы обычно проверяете отказ в распределении памяти.
Из моего поиска в Google я увидел nothrow, как показано ниже.
char *buf = new (nothrow)char[10];
Я также видел следующее.
try{} catch(bad_alloc&) {}
Но как насчет следующего? Я использую некоторые из процедур библиотеки chrome для использования интеллектуальных указателей.
Например, у меня есть код следующим образом.
scoped_array<char> buf(new char[MAX_BUF]);
Замечательно использовать интеллектуальные указатели, но я просто не уверен, как проверить, успешно ли выделено выделение памяти. Нужно ли мне разбивать на два отдельных заявления с помощью nothrow или try/catch? Как вы обычно делаете эти проверки на С++?
Любые советы будут оценены.