Я провел некоторое исследование после изучения new
, в отличие от malloc()
, к которому я привык, не возвращает NULL для неудачных распределений, и обнаружил, что существуют два разных способа проверить, выполнено ли новое или нет. Этими двумя способами являются:
try
{
ptr = new int[1024];
}
catch(std::bad_alloc& exc)
{
assert();
};
и
ptr = new (std::nothrow) int[1024];
if(ptr == NULL)
assert();
Я считаю, что два пути достигают той же цели (исправьте меня, если я ошибаюсь, конечно!), поэтому мой вопрос таков:
что является лучшим вариантом для проверки успеха new
, основанного исключительно на читабельности, ремонтопригодности и производительности, при этом игнорируя условное соглашение о программировании на языке С++.