Dev - C++ - Por que no puedo usar mas memoria?

   
Vista:

Por que no puedo usar mas memoria?

Publicado por Cristian (3 intervenciones) el 28/11/2015 20:28:18
Estoy aprendiendo a utilizar punteros y pense en jugar con la memoria dinamica, asi que realize el siguiente codigo pero parece que mi programa compila con algun tipo de limite en el heap, tal vez sea mi imaginacion pero lo corro con 32gb de ram y solamente puede acceder a 34 mil valores, lo que me parece bastante raro, cualquier comentario se agradece

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <new>
 
using namespace std;
 
int main ( void )
{
	int *array = NULL;
 
	for ( int i = 1; i < 99999; ++i )
	{
		array = new ( nothrow ) int [i];
 
		if ( array == NULL )
		{
			delete[] array;
			array = NULL;
			cout << i << endl;
                        return 0;
		}
 
		for ( int j = 0; j < i; ++j )
		{
			array[j] = 0;
		}
	}
 
	return 0;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Por que no puedo usar mas memoria?

Publicado por Requeteprogramador (8 intervenciones) el 28/11/2015 23:03:30
Efectivamente, el heap tiene un límite, que se puede configurar en las opciones del proyecto.

Pero el programa tuyo no da un error al reservar memoria porque el array es muy largo, sino porque has reservado muchos arrays y ocupado todo el heap. Reservas un array y sólo lo liberas si no se ha reservado nada, con lo que después de unas cuantas iteraciones tienes el heap lleno.

También hay que tener en cuenta que la gestión de memoria en los sistemas operativos con un procesador de intel en modo protegido no es como parece a simple vista.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar