膨大な量の地形データをメモリに保持する Minecraft に似た C++ でゲームを設計しています。一般に、[5][4][5][50][50][50] の配列をメモリに格納したいと考えています。私の構造は約 8 バイトしかないため、仮想メモリは約 100 MB になるので、これは悪くありません。
しかし、これを処理する最善の方法を見つけるのに苦労しています。これを仮想メモリに入れたいのですが、明らかにスタックには入れません。そして、スタック上にこの配列を作成する方法を間違えて、スタックオーバーフローを引き起こし続けています。やりたいことは以下です。これは、私が行っていることの例を示すためにまとめた単なるコードです。私のマシンには正しい構文のコードがあります。投稿を混乱させたくありませんでした。
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];
}
ただし、これを行うたびに、スタック オーバーフローが発生します (適切な Web サイトの選択ですよね?)。ポインターベースの配列を使用して遊んでいましたが、その範囲外でデータが失われるという多くの問題がありました。
データをスタックではなくヒープに保存する方法について誰かが私に洞察を与えることができれば、または配列を作成する他の方法を使用する必要がある場合は、本当に助けていただければ幸いです。オーバーヘッドのためにベクトルの使用を避けたいのですが、それがどれほど重要かはわかりません。