我收到以下代码的Segmentation fault(core dumped)。请帮帮我

时间:2015-07-10 12:04:01

标签: c pointers

void SortedInsert(struct node** headRef, struct node* newnode)
{
        struct node* current= *headRef;

        if(newnode->data<current->data)
        {
                newnode->next=current;
                *headRef=newnode;
        }
        else
        {
                current=current->next;                  
                while(current!=NULL)
                {

                        if(newnode->data<current->next->data)
                                break;

                current=current->next;
                }

                newnode->next=current->next;
                current->next=newnode;
        }
}

2 个答案:

答案 0 :(得分:1)

考虑插入列表末尾的情况。然后你得到

// current = NULL
current->next = nextnode;
// is ((struct node*)NULL)->next = nextnode;

答案 1 :(得分:0)

上面的代码不足以指出错误。

但是,作为一般性建议,如果没有有效性(android:largeHeap="true" )检查,则会有很多指针解除引用。在解除引用之前,请添加一个检查以查看指针是否有效,因为NULL被认为是指针的无效值并尝试取消引用产生undefined behaviour的指针。这有时会导致分段错误。