我正在尝试在c程序中创建一个二维数组字符:
char array[1000000][10];
但是程序在运行时输出“Segmentation fault”。我尝试用100,000创建它并且它有效,但是1,000,000没有用。使这行代码导致分段错误的原因是什么?
答案 0 :(得分:2)
假设它是一个函数内部的局部变量,它可能会溢出你的操作系统对堆栈有多大的想法。
该阵列需要1000000 * 10 = ~9.5 MB的堆栈空间,这是非常多的。
尝试:
static
。malloc()
。答案 1 :(得分:0)
大约10兆字节。您可能正在尝试将变量定义为函数局部变量。堆栈通常不是那么大。改为使用动态分配的内存。