ГС>Обычная форма new кидает исключение bad_alloc.
ГС>Но если записать:
ГС> int *k_arr = new (std::nothrow) int[UINT_MAX]; // allocation will fail
ГС>то исключения небудет, но перед использованием указатель нужно проверить на NULL.
Это по стандарту так все должно быть. А вот допустим в VC 6.0 по-моему было неправильно — ноль возвращался.
А сгенерить исключение, ну так попробуй так
try{
for(;;)
int * p = new int[10000000];//:))
if(!p)break;
}
catch(std::bad_alloc)
{
//попадешь ли ты сюда?
}