そのようなコードがあります:
#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 でコンパイルされています。例外がスローされるのはなぜですか?
編集:
mingw の Windows で g++ を使用すると、すべて正常に動作します。