链表节点组合器功能

时间:2014-02-13 12:29:40

标签: c++ linked-list

我有这个函数来检查链表中的节点是否在物理上彼此相邻,用start_byteend_byte变量按字节顺序排列。但我的功能一直是segfaulting,我不知道为什么,有人可以提供帮助吗?

void checkIfFreeTogether(void)
{
    FREEPTR l =freelist;
    FREEPTR f = freelist;
    FREEPTR g =freelist;
    int i = 0;

        while(f->next!=NULL)
    {

        if(f->end_byte+1==f->next->start_byte)
        {
                    cout << f << endl;

        f->size = f->size + f->next->size;
                cout << f << endl;

        f->end_byte = f->next->end_byte;
                cout << f << endl;
                cout << f->next << endl;


        f->next=f->next->next;

                cout << f << endl;
                cout << f->next << endl;

        }

            f=f->next;          

    }       

}

这是此特定函数的输出,用于调试和显示值的couts

0x200583a8
0x200583a8
0x200583a8
0x20058438
0x200583a8
0
Segmentation fault (core dumped)

1 个答案:

答案 0 :(得分:1)

这可能f->next->next为空:

            f->next=f->next->next;

            cout << f << endl;
            cout << f->next << endl;

然后你:

            f=f->next;   

并且while在下一次迭代时崩溃

所以你的while应该是:

            while(f && f->next)
你调试了吗?