搜索链表时的Segfault

时间:2018-03-13 02:15:50

标签: c++ linked-list

newnode = head;
tempnode = head;
if (head)
{
    while (tempnode)
    {
        if (tempnode->next != NULL)
        {
            cout << tempnode->labValue << " ";
            tempnode = tempnode->next;
        }
    }
}

所以我有这个代码搜索我创建的链表并打印它的值。它成功地打印了每个值,但随后它进入了sig错误。我看了一遍,每次尝试的东西,我仍然得到sig错误。我假设我得到错误,因为我正在尝试访问不存在的内存,所以我尝试使用while循环和if语句进行检查,但仍然没有运气。我很抱歉,如果这是一个常见的问题,我很沮丧。

1 个答案:

答案 0 :(得分:1)

链表的末尾可能不会以空值终止。如果您没有明确地将尾节点的下一个指针设置为null,则下一个指针可能指向垃圾(例如未初始化的数据)。指针值不会为空,这就是你进入循环并崩溃的原因。

在while循环处放置一个断点并验证它。

顺便说一句,将nullptr用于空指针值非常有用。在tempnode->next == NULL时,你还需要突破while循环,因为tempnode在那时不会为null。