链表节点上的分段错误

时间:2016-05-22 11:03:54

标签: c++ linked-list fault

我想过链表,但是有分段错误。 但我不知道,为什么这段代码有内存泄漏......

我刚试过

codeblock说,ptr = next; < - 这部分有分段错误。

if(head == NULL)
        {
            head = new Nodes;
            head->r_data = data1;
            head->u_data = data2;
            head->r_node = NULL;
            head->u_node = NULL;
        }
        else
        {
            Nodes *ptr;
            ptr = head;
            Nodes *next;
            next = head->r_node;
            while(ptr != NULL)
            {
                if(ptr->r_data == data1)
                {
                    next = ptr->u_node;
                    while(ptr != NULL)
                    {
                        if(ptr->u_data < data2)
                        {
                            ptr = next;
                            next = ptr->u_node;
                        }
                        else
                        {
                            break;
                        }
                    }
                    break;
                }
                else if(ptr->r_data < data1)
                {
                    ptr = next;
                    next = ptr->r_node;
                }
            }
            ptr->r_data = data1;
            ptr->u_data = data2;
            ptr->r_node = NULL;
            ptr->u_node = NULL;
        }

1 个答案:

答案 0 :(得分:0)

问题可能在于您尝试访问不存在的内存位置。在这种情况下,首先检查您想要访问的内存位置是否可访问始终是有帮助的。在您的情况下,如果有助于添加如下内容:

if(ptr->r_data == data1 && ptr->u_node!=NULL)
   {
    next = ptr->u_node;
    ......

以这种方式做事将使您免于陷入细分问题。