创建链表时出现分段错误

Segmentation fault in creating Linked list

本文关键字:分段 错误 链表 创建      更新时间:2023-10-16

在这个特定的问题中,我试图找到正在发生的分割故障。我知道在创建k的单个数字的链表时出现错误。

struct Node
{
    int data;
    struct Node *next;
};
int n1 = 0;
int n2 = 0;
int k = 1;
int calc(Node *h)
{
    int sum=0;
    for( ; h != NULL ; h = h->next)
        sum=(sum*10)+h->data;
    return sum;
}
Node* Lists(Node *headA, Node* headB)
{
    n1 = calc(headA);
    n2 = calc(headB);
    int k = n1 + n2;
    Node *temp;
    temp->data=k%10;
    while(k>0)
    {
        k=k/10;
        Node *t1=new Node;
        t1->data=k%10;
        t1->next=temp;
        temp=t1;
    }
    return temp;
}

错误存在于以下代码中:

Node *temp;
temp->data = k % 10;

具体来说,temp被声明为指向Node结构体的指针,但是从来没有给出在内存中指向的有效位置,所以它包含一个垃圾地址,很可能指向某个不可写区域。

如果你想解决这个问题,你应该首先为你的变量分配一个区域,像这样:

Node *temp = new Node;

,然后在完成后将其标记为已释放(通过在其上调用delete)。我还建议您更好地格式化代码,因为从查看者的角度来看,这并不十分方便。