Manipulando matrizes multidimensionais enormes em C ++

Estou projetando um jogo em C ++ semelhante ao Minecraft que contém uma enorme quantidade de dados do terreno na memória. Em geral, quero armazenar uma matriz na memória que seja [5] [4] [5] [50] [50] [50]. Isso não é ruim, pois equivale a cerca de 100mb de memória virtual, pois minha estrutura terá apenas 8 bytes.

No entanto, estou tendo problemas para descobrir a melhor maneira de lidar com isso. Eu quero que isso esteja na memória virtual, mas obviamente não está na pilha. E continuo cometendo o erro de como criar essa matriz na pilha e causar um estouro de pilha. O que eu gostaria de fazer está abaixo. Este é apenas o código que juntei para dar um exemplo do que estou fazendo, tenho código com sintaxe correta na minha máquina, só não queria desorganizar a postagem.

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];
}

No entanto, toda vez que faço isso, causa um estouro de pilha (escolha adequada do site, certo?). Eu brinquei com o uso de matrizes baseadas em ponteiro, mas tive muitos problemas com a perda de dados fora do seu escopo.

Se alguém puder me dar uma ideia de como meus dados são armazenados no heap em vez da pilha, ou se devo usar outra maneira de criar minha matriz, eu realmente aprecio a ajuda. Eu gostaria de evitar o uso de vetores por causa da sobrecarga, embora não tenha certeza de quão substancial é.

questionAnswers(8)

yourAnswerToTheQuestion