Я видел, как ресурсы показывают два способа выделения памяти, при этом гарантируя, что памяти было достаточно для завершения операции.
1) обернуть операцию 'new' в try / catch, так как она вернет std :: bad_alloc (?)
try { ptr = new unsigned char[num_bytes]; } catch(...) {}
2) проверить присвоенный указатель на нулевое значение после операции 'new'.
ptr = new unsigned char[num_bytes]; if(ptr == NULL) { ... }
Какой из них прав? Они оба работают? Должен ли я, возможно, сделать и 1 и 2?
Спасибо,
JBU