【发布时间】:2015-03-13 03:02:11
【问题描述】:
当我运行我的代码时,我不断收到一条消息,提示我有分段错误。我用 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;
}
【问题讨论】:
-
见here for how to debug。请参阅 here 了解如何发布不起作用的代码。
-
p 在开始时有什么值(就在
node_t *p = *h之后)? -
什么是
list_t? (看起来它可能是一个讨厌的指针 typedef) -
既然您已经拥有
gdb,只需使用它运行程序,并在崩溃和烧毁时,查看您的变量。
标签: c segmentation-fault