创建链接列表时出现分段错误

时间:2015-07-13 23:26:56

标签: c++ linked-list segmentation-fault

在这个特殊的问题中,我试图找到正在发生的分段错误。我知道在创建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;
}

1 个答案:

答案 0 :(得分:0)

错误存在于以下代码中:

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

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

如果你想解决这个问题,你首先要为变量分配一个区域,如下所示:

Node *temp = new Node;

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