Max*_*ers 2 c segmentation-fault
有一个奇怪的分段错误错误.以下代码运行正常
#include <stdlib.h>
#include <stdio.h>
main()
{
int matrixSize = 1000;
int i,j;
double a[matrixSize][matrixSize];
for (i = 0; i < matrixSize; i++)
for (j = 0; j < matrixSize; j++)
a[i][j] = rand() % 10;
double b[matrixSize][matrixSize];
for (i = 0; i < matrixSize; i++)
for (j = 0; j < matrixSize; j++)
b[i][j] = rand() % 10;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试再初始化一个2D数组时,我得到"分段错误"异常:
#include <stdlib.h>
#include <stdio.h>
main()
{
int matrixSize = 1000;
int i,j;
double a[matrixSize][matrixSize];
for (i = 0; i < matrixSize; i++)
for (j = 0; j < matrixSize; j++)
a[i][j] = rand() % 10;
double b[matrixSize][matrixSize];
for (i = 0; i < matrixSize; i++)
for (j = 0; j < matrixSize; j++)
b[i][j] = rand() % 10;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
潜在的原因是什么?
tpg*_*114 10
您最有可能超出堆栈大小.
在您使用的终端中运行此命令,请尝试输入
ulimit -s unlimited
假设您使用bash(或sh)在Linux系统上运行并重新运行.
如果你必须使用大小的数组,你可以使它们动态,因为如果由于某种原因改变堆栈大小是有问题的,它们就在堆而不是堆栈上.