Ver Mensaje Individual
  #2 (permalink)  
Antiguo 30/03/2015, 05:34
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 7 meses
Puntos: 204
Respuesta: RAM allocation - Duda sobre tamaño maximo

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 original
  1. do
  2.         {
  3.             p = new ( nothrow )   int[n];
  4.             n++;
  5.         }
  6.     while ( p != nullptr );
  7.    
  8.     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