C-如果语句分割故障



我正在检查以查看指针是否存在,如果确实存在,则它不能指向null/Zero值。我的代码看起来像这样:

if (prior != NULL && *prior){
  //do something
}

先验是指针。但是,我在*prior上遇到了细分故障。但是我不明白这是怎么可能的。如果先验为零指针,则应短路,因此 *先验应始终工作。

有什么想法?

if (prior != NULL && *prior){
    //do something
}

segfault的理由不仅仅是提出无效指针。指针可能不是零的,但是,如果您尊重无效或悬挂的指针,您的程序仍然可以发挥作用。

重新访问有关指针的众所周知的答案:可以在其范围之外访问本地变量的内存吗?

还解释了为什么指针可能是无效的,但仍然无效。

最新更新