Re[3]: operator new, return 0 и MSVC 7
От: Аноним  
Дата: 29.04.03 11:12
Оценка:
Здравствуйте, Lorenzo_LAMAS, Вы писали:

ГС>Обычная форма new кидает исключение bad_alloc.

ГС>Но если записать:
ГС> int *k_arr = new (std::nothrow) int[UINT_MAX]; // allocation will fail
ГС>то исключения небудет, но перед использованием указатель нужно проверить на NULL.

L_L>Это по стандарту так все должно быть. А вот допустим в VC 6.0 по-моему было неправильно — ноль возвращался.


L_L>А сгенерить исключение, ну так попробуй так

L_L>
L_L>try{
L_L>for(;;)
L_L>  int * p = new int[10000000];//:))
L_L>  if(!p)break;
L_L>}
L_L>catch(std::bad_alloc)
L_L>{
L_L>  //попадешь ли ты сюда?
L_L>}
L_L>


Да, действительно, MSVC7 несовсем соотв. стандарту в этом отношении. Если не подключена STL (напр., iostream), new возвращает 0. Иначе -- кидает исключение.

Спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.