创建列表时出现分段错误

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。

此外,调试空循环可能很困难。考虑(仅用于调试目的)在循环内添加一些虚拟语句(即递增计数器)。

您还应该使用内存视图(如果可能的话在您的调试器中使用)来检查指针指向的内存位置的内容。

祝你好运!