Eres un pesado, ya te contestamos a esto en el hilo anterior... ¿será que no lees lo que escribimos? Y no, lo siento, no pongas que no seamos duros contigo cuando estás poniendo el mismo código que en el hilo anterior:
Código C++:
Ver originaldo
{
p = new ( nothrow ) int[n];
n++;
}
while ( p != nullptr );
delete[] p;
el "new" reserva memoria... como puede reservarla se repite el bucle do-while, por lo que se vuelve a ejecutar el "new" (sin un delete previo, al hacer "new", "p" apuntará a la nueva reserva de memoria y se "olvidará" de la anterior, por lo que ya estás dejando lagunas de memoria)... cuando ya no puedes reservar más memoria sales del do-while y ejecutas el delete... pero claro, llegados a ese punto "p" apunta a null porque no se ha podido hacer la reserva de memoria y, en consecuencia, ese delete no hace
absolutamente nada.
Al salir de la función tienes toda la memoria ocupada ya que no has liberado absolutamente nada... después intentas hacer operaciones que consumen más RAM y... ohhhh sorpresa, el programa falla porque no tiene RAM... ¿por qué sera? ah, si, quita,
porque no has liberado la memoria que tenías reservada