搜索链表时出现隔离错误

Segfault when searching through linked list

本文关键字:隔离 错误 链表 搜索      更新时间:2023-10-16
newnode = head;
tempnode = head;
if (head)
{
    while (tempnode)
    {
        if (tempnode->next != NULL)
        {
            cout << tempnode->labValue << " ";
            tempnode = tempnode->next;
        }
    }
}

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

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

在 while 循环中放置一个断点并验证这一点。

顺便说一下,将 nullptr 用于空指针值很有用。您还需要在tempnode->next == NULL的情况下突破 while 循环,因为此时 tempnode 不会为空。