Существует такой код:
#include <iostream>
int main(){
for(;;){
int* ptr = new (std::nothrow) int;
if(ptr == 0){
std::cout << 0 << std::endl;
break;
}
}
std::cin.get();
return 0;
}
Однако эта программа по-прежнему выдает исключение std :: bac_alloc, хотя new вызывается с параметром std :: nothrow.Эта программа скомпилирована в Visual C ++ 2010. Почему генерируется исключение?
Редактировать:
Используя g ++ в Windows из mingw, все работает нормально.