在我们的某些代码中;我们遇到了分段错误,并且gdb stacktrace显示了指针指向0x1
。我们有3个这些分段错误的实例,每个实例都有3个实例。指针最终指向0x1
。
我想从此错误中“恢复”正常;而不是SEGFAULT
。我无法检查NULL
;因为那将是0
。我是否明确检查地址0x1
?
在Linux上使用GCC3.4.2(SLES9计算机)
最佳答案
可能不是最好的主意。
恢复的方法(从技术上讲,恢复是不合理的,您实际上需要防止恢复)将假定0x1
与NULL
一样糟糕,并且在这种情况下不要尝试使用它,例如:
if ((p == 0) || (p == 0x1))
return;
// Otherwise use p.
但是,我非常calling称其为优美。正确的做法是查找导致指针设置为该无效值的原因并进行修复。这样做特别合适,因为一段代码足够狡猾,无法生成
1
的指针值,也可能足够狡猾,足以生成2
或任何其他无效的指针。检查
1
类似于当某人不断向您 flutter 打时用止痛药来止头痛。您可以服用该平板电脑来缓解头痛,但可以肯定的是,解决该问题的根本原因会更好(即,不要让该人向您的头部打sm)。关于c++ - 指针指向0x1-检查null是否有效?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9577487/