Manejo de enormes matrices multidimensionales en C ++

Estoy diseñando un juego en C ++ similar a Minecraft que contiene una enorme cantidad de datos del terreno en la memoria. En general, quiero almacenar una matriz en la memoria que es [5] [4] [5] [50] [50] [50]. Esto no está mal, ya que equivale a unos 100 MB de memoria virtual, ya que mi estructura solo tendrá unos 8 bytes.

Sin embargo, tengo problemas para encontrar la mejor manera de manejar esto. Quiero que esto esté en la memoria virtual, pero obviamente no en la pila. Y sigo cometiendo el error de cómo crear esta matriz en la pila y causar un desbordamiento de la pila. Lo que me gustaría hacer está abajo. Este es solo el código que reuní para darle un ejemplo de lo que estoy haciendo, tengo un código con la sintaxis correcta en mi máquina, simplemente no quería saturar la publicación.

typedef struct modelBlock
{
    // Information about the blocks
} BLOCK;

typedef struct modelGrid
{
    bool empty;

    BLOCK blocksArray[50][50][50];

} GRID;


class Parent
{
     Child* child;
     Parent(void);
}

Parent::Parent()
{
    Child c;
    child = &c;
}

class Child
{
     GRID grids[5][4][5];
}

Sin embargo, cada vez que hago esto, provoco un desbordamiento de la pila (¿elección correcta del sitio web, verdad?). Jugué usando matrices basadas en punteros, pero tuve muchos problemas con la pérdida de datos fuera de su alcance.

Si alguien pudiera darme una idea de cómo hacer que mis datos se almacenen en el montón en lugar de en la pila, o si usara alguna otra forma de crear mi matriz, realmente agradecería la ayuda. Me gustaría evitar el uso de vectores debido a la sobrecarga, aunque no estoy seguro de lo sustancial que es.

Respuestas a la pregunta(8)

Su respuesta a la pregunta