gpt4 book ai didi

c - 出现段错误(核心已转储)

转载 作者:行者123 更新时间:2023-11-30 20:14:11 25 4
gpt4 key购买 nike

我在执行下面的代码时遇到段错误。程序编译成功,但在执行时出现错误。什么是段错误以及如何纠正它?

#include<stdio.h>
#include<malloc.h>
#include "sel.h"
#include<sys/time.h>
main(int argc,char *argv[])
{

struct timeval t1,t2;
struct timezone tz;
int i,n;
int *a;

char *num;
FILE *fp;
unsigned long long time1,time2;

fp=fopen("file1.txt","w");
sscanf(argv[1],"%d",&n);
a=(int*)malloc (sizeof(int)*n);
for(i=n;i>0;i--)
{
sprintf(num,"%d\n",i);
fputs(num,fp);
}
fclose(fp);
fp=fopen("file1.txt","r");
i=0;
while(fgets(num,255,fp)!=NULL)
{
sscanf(num,"%d",&a[i++]);
}

gettimeofday(&t1,&tz);
time1=t1.tv_sec*1000000+t1.tv_usec;
sel(a,n);
gettimeofday(&t2,&tz);
time2=t2.tv_sec*1000000+t2.tv_usec;
fclose(fp);
fp=fopen("file2","w");
for(i=0;i<n;i++)
{
sprintf(num,"%d\n",a[i]);
fputs(num,fp);
}
free(a);
printf("\n %llu",time2-time1);
}

最佳答案

段错误意味着您的内存访问错误。在这种情况下,您从未为 num 分配任何内存,因此您正在写入未初始化的指针。

关于c - 出现段错误(核心已转储),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27341086/

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