Buenas,
Te propongo una pequeña modificación en tu código que te ayudará a entender que es lo que estás haciendo/entendiendo mal:
Código C++:
Ver original#include <iostream>
#include <new>
using namespace std;
int main ()
{
long long int n = 0;
long long int * p;
while(p != 0)
// Utilizo zero por que no me gusta modificar el compilador para que //agarren los null y nullptr
{
//nothrow evita que new se rompa al toparse con la memoria maxia y no poder asignar //mas, en lugar de eso, regresa un puntero nulo o... a mi humilde entendimiento 0.
p= new (nothrow) long long int[n];
n++;
}
cout << endl << "-----------------------" << endl;
//Hemos reservado memoria para n arrays long long int, cada uno con n+1 elementos
long totalSize = 0;
for (int i = 1; i<n; i++) {
totalSize += n;
}
cout << "Real number of allocated long long int: " << totalSize << endl;
delete[] p;
return 0;
}
En mi modestísimo equipo me devuelve 533794816, que son unos dos gigas. Nada mal.
Un saludo