C语言中,什么叫做segmentation fault???急~~谢谢了啊 10

我以运行我的程序就出来什么segmentationfault~那是什么东西啊??各位大侠,救救我吧……这是我的程序~intmain(void){intn;printf("... 我以运行我的程序就出来什么segmentation fault~那是什么东西啊??各位大侠,救救我吧……这是我的程序~
int main(void)
{
int n;
printf("Enter dimension of square matrix:\n");
scanf("%d", &n);
printf("Enter the %d entries of the matrix:\n", n*n);

//This part creates a n by n matrix to let the user insert the data.
double **matrix=(double**)malloc(n*sizeof(double*));
int i=0;
int j=0;
for(i=0;i<n;i++)
matrix[i]=(double*)malloc(n*sizeof(double));
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%lf",& matrix[i][j]);
}
}
printf("The input matrix:\nA = \n");
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
printf(" %12.3e ", matrix[i][j]);
}
printf("\n");
}

//The following part creates a corresponding n by n identity matrix.
double **matrix2=(double**)malloc(n*sizeof(double*));
int a;
for(a=0;a<n;a++)
matrix2[a]=(double*)malloc(n*sizeof(double));
for(a=0;a<n;a++)
{
int b;
for(b=0;b<n;b++)
{
if(a==b)
matrix2[a][b]=1;
else
matrix2[a][b]=0;
}
}

if(matrix[0][0] != 0)
;
else
{
int m;
int o;
for(m=1;1<n;m++)
{
if(matrix[0][m] == 0)
;
else
{
for(o=0;o<n;o++)
{
double n;
n = matrix[o][m];
matrix[o][m] = matrix[o][0];
matrix[o][0]=n;
}
}
}
}

int e;
for(e=0; e<n; e++)
{
int c,d;
for(c=0; c<n; c++)
{
if(c==e)
{
for(d=0; d<n; d++)
{
matrix[d][c] *= (1/matrix[e][e]);
matrix2[d][c] *= (1/matrix2[e][e]);
}
}
else
{
for(d=0; d<n; d++)
{
matrix[d][c] -= (matrix[0][c]*matrix[e][e]);
matrix2[d][c] -= (matrix2[0][c]*matrix2[e][e]);
}
}
}
printf("After Step 4:\nA =\n");
printf(" %12.3e ", matrix[d][c]);
printf("\n");
printf("B =\n");
printf(" %12.3e ", matrix2[d][c]);
}

printf("The inverse of the input matrix:\nB =\n");
int k,l;
for(k=0; k<n; k++)
{
for(l=0; l<n; l++)
printf(" %12.3e ", matrix2[l][k]);
}

return 0;
}
展开
 我来答
deitytoday
2009-11-06 · TA获得超过349个赞
知道小有建树答主
回答量:242
采纳率:0%
帮助的人:314万
展开全部
一般而言, 就是数组越界访问, 相当于runtime error.

查查你的程序对matrix数组访问是否正确吧 估计有地方逻辑写错了

printf("After Step 4:\nA =\n");
printf(" %12.3e ", matrix[d][c]);
printf("\n");
printf("B =\n");
printf(" %12.3e ", matrix2[d][c]);

这里的matrix[d][c]越界访问了, 你的c此时等于n, 而matrix范围是0至n-1
zhihuashangy
2009-11-09 · TA获得超过369个赞
知道小有建树答主
回答量:624
采纳率:100%
帮助的人:293万
展开全部
segmentation fault 是和内存有关的错误 可能是你的数组越界了 也可能是你的 printf前后没对应
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
晓晓
2009-11-10 · TA获得超过526个赞
知道小有建树答主
回答量:282
采纳率:0%
帮助的人:219万
展开全部
c++编译没有问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liyanbin_163
2009-11-06 · TA获得超过296个赞
知道答主
回答量:210
采纳率:0%
帮助的人:155万
展开全部
我也不太知道你的错误在那里,但是我想说的是,你这里面动态分配内存的地方,完全可以用一个二维数组解决啊~!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式