可能重复:
如何使用双指针分配二维数组?
我使用 VB 2012 Express 制作了一个迷宫程序。
ROW*COLUMN
即使我设置为,它也能很好地工作499*499
(迷宫是一个数组:)unsigned char maze[ROW][COLUMN]
。
但是有一次我试图做一个超级巨大的迷宫999*999
,编译器给了我一个“堆栈溢出”错误。
我知道这意味着什么,但是有没有办法分配额外的内存甚至使用一些磁盘空间来运行我的程序?
可能重复:
如何使用双指针分配二维数组?
我使用 VB 2012 Express 制作了一个迷宫程序。
ROW*COLUMN
即使我设置为,它也能很好地工作499*499
(迷宫是一个数组:)unsigned char maze[ROW][COLUMN]
。
但是有一次我试图做一个超级巨大的迷宫999*999
,编译器给了我一个“堆栈溢出”错误。
我知道这意味着什么,但是有没有办法分配额外的内存甚至使用一些磁盘空间来运行我的程序?
您maze
在堆栈上进行分配,堆栈大小通常限制在 1 到 8 兆字节之间。要克服此限制,maze
请在堆上分配。
有关如何执行此操作的建议,请参阅如何使用双指针分配 2D 数组?和堆分配一个二维数组(不是指针数组)
您可以动态分配数组(例如maze = new char[ROW*COLUMN]
)或全局分配(在函数范围之外),例如
#define ROW 999
#define COLUMN 999
unsigned char maze[ROW][COLUMN];
int main(void)
{
}