你如何解决分段错误

时间:2015-03-13 03:02:11

标签: c segmentation-fault

当我运行我的代码时,我不断收到一条消息,说我有分段错误。我用GDB进行了核心转储,它告诉我我的问题是p = p-> next;在下面的函数中。有人可以帮助我理解我做错了什么以及如何解决它?我知道分段错误与错误使用指针有关,但我不确定p = p-> next有什么问题。

int list_size(const list_t *h) {
node_t *p = *h;
int r = 0;
do {
    r += 1;
    p = p->next;
} while (p);
return r;
}

1 个答案:

答案 0 :(得分:3)

在使用之前检查空指针。

更改

do {
    r += 1;
    p = p->next;
} while (p);

while (p)
{
    r += 1;
    p = p->next;
}