有这样的代码:
#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++,一切正常。