【问题标题】:How do you fix a segmentation fault如何修复分段错误
【发布时间】: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;
}

【问题讨论】:

标签: c segmentation-fault


【解决方案1】:

在使用前检查空指针。

改变

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

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

【讨论】:

  • 非常感谢。解决了它:)
  • 如果解决了它,那么你应该标记 R sahu 的答案正确@SteveCohen
猜你喜欢
  • 2012-09-04
  • 2022-11-21
  • 2017-06-04
  • 1970-01-01
  • 1970-01-01
  • 2021-07-18
  • 2019-06-20
  • 2015-07-15
相关资源
最近更新 更多