Can';t定位长度为1000000的c中字符的二维数组
我试图在c程序中创建一个二维字符数组,如下所示:Can';t定位长度为1000000的c中字符的二维数组,c,arrays,C,Arrays,我试图在c程序中创建一个二维字符数组,如下所示: char array[1000000][10]; 但是程序在运行时输出“分段错误”。我试着用100000创建它,它成功了,但1000000没有成功。这行代码导致分段错误的原因是什么?大约是10兆字节。您可能试图将变量定义为函数局部变量。堆栈通常没有那么大。使用动态分配的内存。如果堆栈是函数中的局部变量,则可能会溢出操作系统对堆栈大小的理解 该阵列将需要1000000*10=~9.5MB的堆栈空间,这相当大 尝试: 使其静态 改用malloc(
char array[1000000][10];
但是程序在运行时输出“分段错误”。我试着用100000创建它,它成功了,但1000000没有成功。这行代码导致分段错误的原因是什么?大约是10兆字节。您可能试图将变量定义为函数局部变量。堆栈通常没有那么大。使用动态分配的内存。如果堆栈是函数中的局部变量,则可能会溢出操作系统对堆栈大小的理解 该阵列将需要1000000*10=~9.5MB的堆栈空间,这相当大 尝试:
- 使其
静态
- 改用
malloc()
- 修改操作系统级别限制
- 使之全球化。当然,全局变量是不好的,所以在许多情况下,这是最糟糕的解决方案