我正在检查指针是否存在,如果它确实存在,那么它不会指向NULL /零值。我的代码如下所示:
if (prior != NULL && *prior){
//do something
}
先前是指针。但是,我在*prior
上遇到了分段错误。但我不明白这是怎么回事。如果previous是NULL指针,则if语句应该短路,因此* previous应始终有效。
有什么想法吗?
答案 0 :(得分:3)
if (prior != NULL && *prior){
//do something
}
段错误的原因多于解除引用NULL指针。指针可能不是NULL,但如果你是一个无效或悬挂的指针,你的程序仍然可能是段错误。
重温这个关于指针的众所周知的答案:Can a local variable's memory be accessed outside its scope?
这也解释了为什么指针可以是非NULL但仍然无效。