创建列表时出现分段错误
Posted
技术标签:
【中文标题】创建列表时出现分段错误【英文标题】:Segmentation fault while creating a list 【发布时间】:2021-12-10 04:41:04 【问题描述】:我正在创建一个新的结构列表,我将在其中保存有关一系列汽车的一些信息。我编译代码没有问题,但是一旦我运行它就会出现分段错误。
这是问题所在的代码:
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 循环的代码行中。有什么问题?我只使用
【问题讨论】:
我们需要足够的代码来复制问题。您向我们展示的代码是 victim,而错误在肇事者中,您没有向我们展示。 @Il_Kevo 提供一个演示问题的最小完整程序。 【参考方案1】:通过阅读您的代码,它似乎是正确的;如果它产生分段错误,我认为唯一的方法是因为“head”可能没有正确初始化为null。
此外,调试空循环可能很困难。考虑(仅出于调试目的)在循环内添加一些虚拟语句(即递增计数器)。
您还应该使用内存视图(如果可能在您的调试器中)来检查指针指向的内存位置的内容。
祝你好运!
【讨论】:
这应该是一条评论。 我同意,弗拉德,但我目前的声誉不允许我评论第三方帖子,只能评论自己的帖子。所以,这是我发现给这个用户一个提示的唯一方法。请让我知道是否可以使用其他方法,我不太习惯论坛中的所有功能和政策。以上是关于创建列表时出现分段错误的主要内容,如果未能解决你的问题,请参考以下文章