gpt4 book ai didi

c - 执行 main 之前的段错误

转载 作者:太空宇宙 更新时间:2023-11-04 00:23:56 29 4
gpt4 key购买 nike

我正在练习 c 并在 main 函数执行之前面临段错误(“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;
}

最佳答案

局部变量,包括数组,都存储在栈中。 Linux 上的默认堆栈大小为 8MB。只有一个数组是 800 万字节,1000 * 1000 * 8(sizeof(double) 是 8)。你有三个这样的数组。

要么使这些数组成为全局数组,要么动态分配。

关于c - 执行 main 之前的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39344851/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com