soo*_*bus 3 c stack-overflow gcc segmentation-fault
我需要用0填充二维数组.但编译后的程序会出现此错误.怎么了?
int main()
{
int vert[1001][1001];
int hor[1001][1001];
int dudiag[1416][1416];
int uddiag[1416][1416];
int n, k, m;
int row, col;
int i, j;
int answer = 0;
for(i = 0; i <= 1000; i++){
for(j = 0; j <= 1000; j++){
vert[i][j] = 0;
hor[i][j] = 0;
}
}
...
}
Run Code Online (Sandbox Code Playgroud)
当循环被注释掉时,它可以正常工作.
问题是你试图在自动存储中分配太多内存(堆栈中的AKA).当您注释掉循环时,编译器会优化分配以及现在未使用的变量,因此您不会崩溃.
您需要将分配更改为静态或动态内存(AKA"堆")以解决此问题.由于问题在于内部main
,因此制作阵列static
将是一个合适的选择.
int main()
{
static int vert[1001][1001];
static int hor[1001][1001];
static int dudiag[1416][1416];
static int uddiag[1416][1416];
...
}
Run Code Online (Sandbox Code Playgroud)
在除了main
你可以使这些数组动态的函数之外,使用malloc
/ 分配它们calloc
,然后free
在程序使用它们之后分配它们.
归档时间: |
|
查看次数: |
92 次 |
最近记录: |