Te permite evaluar el resultado de la reserva de memoria sin usar el try-catch, es como la version en c++ de lo que hacias en c, retorna nulo si no pudo completar la operacion:
Código C:
Ver original//en C o en c++ sin objetos
void *entero;
if((entero
= malloc(sizeof(int)))) { //ok, ya tengo memoria para un entero
}
else {
//error
}
//en c++ contry-catch
void *entero;
try {
entero = new int;
//ok ya tengo memoria para el entero
delete entero;
} catch(bad_alloc ex) {
//error
}
//en c++ con nothrow
void *entero;
if((entero = new (nothrow) int)) {
//ok ya tengo memoria para el entero
delete entero;
}
else {
//error
}
Esto es una copia de la referencia de nothrow:
Código C:
Ver originalThis constant value is used as an argument for operator new and operator new[] to indicate that these functions shall not throw an exception on failure, but return a null pointer instead.
Es decir, por defecto el operador new no retorna el estado de la reserva de memoria, sino que arroja una excepcion; el nothrow cambia este comportamiento para que retorne nulo en caso de error.
Saludos
vosk