当没有足够的内存在C中运行我的程序时,我该怎么办?

时间:2012-12-16 09:13:09

标签: c memory stack-overflow

  

可能重复:
  How can I allocate a 2D array using double pointers?

我使用VB 2012 Express制作迷宫程序。

即使我将ROW*COLUMN设置为499*499,它也能很好地工作,(迷宫是一个数组:unsigned char maze[ROW][COLUMN])。

但有一次我试图制造一个超级巨型迷宫999*999,编译器给了我一个“堆栈溢出”错误。

我知道这意味着什么,但有没有办法分配额外的内存甚至使用一些磁盘空间来运行我的程序?

2 个答案:

答案 0 :(得分:2)

您正在堆栈上分配maze,堆栈大小通常限制在1到8 MB之间。要克服此限制,请在堆上分配maze

有关如何执行此操作的建议,请参阅How can I allocate a 2D array using double pointers?Heap allocate a 2D array (not array of pointers)

答案 1 :(得分:2)

您可以动态分配数组(例如maze = new char[ROW*COLUMN])或全局分配(在函数范围之外),例如

#define ROW 999
#define COLUMN 999

unsigned char maze[ROW][COLUMN];

int main(void)
{

}