创建列表时出现分段错误
Segmentation fault while creating a list
我正在创建一个新的结构列表,我将在其中保存一些关于一系列汽车的信息。我在编译代码时没有遇到任何问题,但是一旦我 运行 它就会出现分段错误。
这是有问题的代码:
car* insertNode(car *head){
car *temp;
car *prec;
temp=(car *)malloc(sizeof(car));
if(temp!=NULL){
temp->next=NULL;
if(head==NULL)
head=temp;
else{//Raggiungi il termine della lista
for(prec=head;prec->next!=NULL;prec=prec->next);
prec->next=temp;
}
getData(temp);
printf("Inserire l'anno di immatricolazione dell'auto: ");
scanf("%i",&temp->anno);
}
else
printf("Memoria esaurita!\n");
return head;
}
我尝试对此进行调试,发现问题出在具有 for 循环的代码行中。有什么问题?我只使用 和 库,我不能使用其他库来完成这项工作,但我不明白问题出在哪里。
看了你的代码,好像是对的;如果它生成分段错误,我认为唯一的方法是因为“head”可能没有正确初始化为 null。
此外,调试空循环可能很困难。考虑(仅用于调试目的)在循环内添加一些虚拟语句(即递增计数器)。
您还应该使用内存视图(如果可能的话在您的调试器中使用)来检查指针指向的内存位置的内容。
祝你好运!
我正在创建一个新的结构列表,我将在其中保存一些关于一系列汽车的信息。我在编译代码时没有遇到任何问题,但是一旦我 运行 它就会出现分段错误。
这是有问题的代码:
car* insertNode(car *head){
car *temp;
car *prec;
temp=(car *)malloc(sizeof(car));
if(temp!=NULL){
temp->next=NULL;
if(head==NULL)
head=temp;
else{//Raggiungi il termine della lista
for(prec=head;prec->next!=NULL;prec=prec->next);
prec->next=temp;
}
getData(temp);
printf("Inserire l'anno di immatricolazione dell'auto: ");
scanf("%i",&temp->anno);
}
else
printf("Memoria esaurita!\n");
return head;
}
我尝试对此进行调试,发现问题出在具有 for 循环的代码行中。有什么问题?我只使用
看了你的代码,好像是对的;如果它生成分段错误,我认为唯一的方法是因为“head”可能没有正确初始化为 null。
此外,调试空循环可能很困难。考虑(仅用于调试目的)在循环内添加一些虚拟语句(即递增计数器)。
您还应该使用内存视图(如果可能的话在您的调试器中使用)来检查指针指向的内存位置的内容。
祝你好运!