как правильно распределить память в C ++ в условиях нехватки памяти

Я видел, что ресурсы показывают два способа распределения памяти, при этом гарантируя, что памяти достаточно для завершения операции.

1) оберните операцию 'new' в try / catch, поскольку она вернет std :: bad_alloc (?)

try { ptr = new unsigned char[num_bytes]; } catch(...) {}

2) проверьте назначенный указатель на null после операции 'new'.

ptr = new unsigned char[num_bytes]; if(ptr == NULL) { ... }

Какой один прав? Они оба работают? Может быть, мне нужно сделать и 1, и 2?

Спасибо,

jbu

12
задан jbu 14 August 2011 в 06:34
поделиться