无法在长度为1000000的c中定位二维chars数组

时间:2015-05-06 08:08:21

标签: c arrays

我正在尝试在c程序中创建一个二维数组字符:

char array[1000000][10];

但是程序在运行时输出“Segmentation fault”。我尝试用100,000创建它并且它有效,但是1,000,000没有用。使这行代码导致分段错误的原因是什么?

2 个答案:

答案 0 :(得分:2)

假设它是一个函数内部的局部变量,它可能会溢出你的操作系统对堆栈有多大的想法。

该阵列需要1000000 * 10 = ~9.5 MB的堆栈空间,这是非常多的。

尝试:

  • 制作static
  • 改为使用malloc()
  • 修改操作系统级别限制。
  • 让它变得全球化。当然全局变量很糟糕,所以在许多情况下这是最糟糕的解决方案。

答案 1 :(得分:0)

大约10兆字节。您可能正在尝试将变量定义为函数局部变量。堆栈通常不是那么大。改为使用动态分配的内存。