程序中出现奇怪的错误:
已经确定某一段代码会造成segmentation fault, 然而在该段代码前加上一行printf(“Here is the segmentation fault.n”); ,则可以消除segmentation fault, 且运行结果正确.
前面加上的这一行printf看起来毫无副作用, 但却造成后面的运行结果完全不同.
发生这种情况多是由于后面的代码中有些变量没有赋初值, 其值仍为该寄存器或该段内存原有的值, 而在前面的一行printf, 看起来虽无副作用, 但一定会涉及寄存器(或者内存)的操作, 从而改写了未赋初值的变量的初值.