c - 如何修复段错误

标签 c segmentation-fault

当我运行我的代码时,我不断收到一条消息,提示我存在段错误。我用 GDB 做了一个核心转储,它告诉我我的问题是 p = p->next; int 下面的函数。有人可以帮助我了解我做错了什么以及如何解决它吗?我知道段错误与指针的不正确使用有关,但我不确定 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;
}

最佳答案

在使用前检查空指针。

改变

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

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

关于c - 如何修复段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29024201/

相关文章:

c - c 中的段错误(核心转储)

c - 包含两个双指针的结构体,访问第二个双指针时出现段错误

c++ - C++段错误问题

c - 如何在 C/C++ 中暂停循环

从 C 中的 Contiki uip 地址构造新的 IPv6 地址

c - 双向链表删除函数中的段错误和异常输出

c++ - 堆栈溢出或指针错误?

c++ - C 带有 char[] 的减法

c++ - 我如何告诉 GCC 为 -l 使用自定义库而不是系统库?

创建静态全局的多个实例/副本