Hay tal código:operador nuevo con la opción nothrow todavía lanza excepción
#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;
}
Sin embargo, este programa todavía lanza excepción std :: bac_alloc, Altough nueva se llama con std :: nothrow parámetro. Este programa está compilado en Visual C++ 2010. ¿Por qué se lanza la excepción?
Editar:
Con g ++ en Windows desde MinGW, todo funciona bien.
Este programa no debe compilarse. Es una pena que lo haga. Debería agregar '#include'. De todos modos, ¿qué versión de VC++ estás usando? –
Bueno, lo hace. Versión del año 2010. – scdmb
También compila en gcc. ¿Qué demonios me hizo creer que sería una buena idea ejecutarlo realmente? – pmr