не меняя ничего в том виде, в каком оно используется.

рабатываю игру на C ++, похожую на Minecraft, которая хранит огромное количество данных о местности в памяти. В общем, я хочу сохранить массив в памяти, который является [5] [4] [5] [50] [50] [50]. Это неплохо, поскольку он составляет около 100 МБ виртуальной памяти, так как моя структура будет составлять всего около 8 байт.

Однако у меня возникли проблемы с поиском лучшего способа справиться с этим. Я хочу, чтобы это было в виртуальной памяти, но, очевидно, не в стеке. И я продолжаю ошибаться, каким образом создание этого массива в стеке вызывает переполнение стека. То, что я хотел бы сделать, ниже. Это просто код, который я написал вместе, чтобы дать вам пример того, что я делаю, у меня есть код с правильным синтаксисом на моей машине, я просто не хотел загромождать пост.

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

Однако каждый раз, когда я делаю это, я вызываю переполнение стека (правильный выбор веб-сайта, верно?). Я играл с использованием массивов, основанных на указателях, но у меня было много проблем с потерями данных за пределами их области видимости.

Если бы кто-нибудь мог дать мне некоторое представление о том, как заставить мои данные хранить в куче, а не в стеке, или если бы я использовал какой-то другой способ создания массива, я был бы очень признателен за помощь. Я хотел бы избежать использования векторов из-за накладных расходов, хотя я не уверен, насколько они существенны.

Ответы на вопрос(8)

Ваш ответ на вопрос