在我们的某些代码中;我们遇到了分段错误,并且gdb stacktrace显示了指针指向0x1。我们有3个这些分段错误的实例,每个实例都有3个实例。指针最终指向0x1

我想从此错误中“恢复”正常;而不是SEGFAULT。我无法检查NULL;因为那将是0。我是否明确检查地址0x1

在Linux上使用GCC3.4.2(SLES9计算机)

最佳答案



可能不是最好的主意。

恢复的方法(从技术上讲,恢复是不合理的,您实际上需要防止恢复)将假定0x1NULL一样糟糕,并且在这种情况下不要尝试使用它,例如:

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/

10-08 21:33