Problemas de memoria...

Skar
12 de Mayo del 2005
Hola, tengo un problema con una instruccion NEW, cuando la instruccion falla al reservar espacio de memoria me regresa un valor 0, alguien sabe como puedo hacer que mi programa pueda utilizar mas memoria del sistema, hacer su heap mas grande, o si existe otra solucion para cuando new falla.
De antemano gracias

Alejandro_
12 de Mayo del 2005
En cualquier compilador estándar el operador new no devuelve 0 (desde el estándar de 1994) cuando no puede asignar la memoria que se le indica, sino que arroja la excepción std::bad_alloc (mira en la ayuda de tu compilador).
Éste es el comportamiento de new en todos los compiladores de C++ estándar posteriores al '94, salvo para el Visual C 6.0, aunque hay un parche para corregirlo en el sitio de Microsoft (no me acuerdo dónde, pero allí está).

Primero prueba cambiando la comprobación de falla, algo como:

try {
char *p = new char[1000000];
}
catch(std::bad_alloc& E) // atrapa la exepción
{
cout<<E.what()<<endl;
//... intenta salvar los papeles...
}

Alejandro