van*_*ers 1 c segmentation-fault
我正在练习c并在主函数执行之前面临分段错误("hi"不打印,甚至gdb没有提到错误行,除了调用来自main函数).有人可以帮助我从哪里出错?我尝试在网上找出并冲浪错误但无法找到我所拥有的代码类型.
#include<stdio.h>
int main(){
printf("hi");
double L,dx,dy,dt;
scanf("%lf %lf %lf %lf",&L,&dx,&dy,&dt);
int i,j;
int x=L/dx;
int y=L/dy;
double ar[1000][1000];
double o1=x/2;
double o2=y/2;
int D=2;
double den[1000][1000];
double den1[1000][1000];
//printf("hi");
for(i=0;i<x;i++)
{
for(j=0;j<y;j++)
{
if(i==o1 && j==o2)
{
ar[i][j]=1;
den[i][j]=1;
}
else
{
ar[i][j]=0;
den[i][j]=0;
}
}
}
//printf("hi");
for(i=1;i<x-2;i++)
{
for(j=1;j<y-2;j++)
{
den1[i][j]=den[i][j]+((den[i+1][j]-den[i][j]+den[i-1][j]-den[i][j])/dx*dx+(den[i][j+1]-den[i][j]+den[i][j-1]-den[i][j])/dy*dy
)*dt+((den[i+1][j]-den[i][j]+den[i-1][j]-den[i][j])/dx*dx+(den[i][j+1]-den[i][j]+den[i][j-1]-den[i][j])/dy*dy)*dt;
}
}
for(i=0;i<x;i++)
{
for(j=0;j<y;j++)
{
printf("%lf",ar[i][j]);
}
printf("\n");
}
printf("\n");
for(i=0;i<x;i++)
{
for(j=0;j<y;j++)
{
printf("%lf",den1[i][j]);
}
printf("\n");
}
printf("\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
局部变量(包括数组)存储在堆栈中.Linux上的默认堆栈大小为8MB.只有一个阵列就是800万字节,1000*1000*8(sizeof(double)8).你有三个这样的数组.
要么使这些数组全局化,要么动态分配.