【发布时间】:2012-11-09 16:26:22
【问题描述】:
即使这两个文件各有 2^14 个值,我的这段代码也会出现分段错误。谁能告诉我原因。
#define N 128
#include<stdio.h>
#include <malloc.h>
int A[N][N];
int B[N][N];
int C[N][N];
void mmul();
int main()
{
int p,q;
FILE *fp;
fp=fopen("A.txt","r");
if(fp=NULL)
printf("Error\n");
printf("A");
for(p=0;p<(1<<7);p++)
{
for(q=0;q<(1<<7);q++)
{
fscanf(fp, "%d", &A[p][q]);
}
}
fclose(fp);
fp=fopen("B.txt","r");
if(fp=NULL)
printf("Error\n");
for(p=0;p<(1<<7);p++)
{
for(q=0;q<(1<<7);q++)
{
fscanf(fp, "%d", &B[p][q]);
}
}
fclose(fp);
printf("here");
mmul();
}
void mmul()
{
int i,j,k;
unsigned int sum;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
sum=0;
for(k=0;k<N;k++)
{
sum=sum+(A[i][k]*B[k][j]);
}
C[i][j]=sum;
}
}
}
【问题讨论】:
-
如果您在您的平台调试器(gdb 等)下运行它,您可能会立即被告知是什么导致了 seg-fault,这可能是这段代码中唯一的引用原始指针的东西:
FILE *fp和你的赋值,而不是评估检查,到 NULL。 -
-1 我刚刚查看了 3 个标记为相关的随机问题,并在所有问题中发现了使用调试器或运行 valgrind 的建议。这清楚地表明您没有那么多look around。
标签: c segmentation-fault