我正在用 C++ 设计一款类似于 Minecraft 的游戏,它在内存中保存了大量的地形数据。一般来说,我想在内存中存储一个数组,即[5][4][5][50][50][50]。这还不错,因为它相当于大约 100mb 的虚拟内存,而我的结构只有大约 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];
}
但是,每次执行此操作时,都会导致堆栈溢出(适当的网站选择,对吧?)。我尝试使用基于指针的数组,但在数据超出其范围之外丢失时遇到了很多麻烦。
如果有人能给我一些关于如何将数据存储在堆而不是堆栈上的见解,或者如果我应该使用其他方式创建数组,我将非常感谢您的帮助。由于开销,我想避免使用向量,尽管我不确定它有多大。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)