在gcc中,在linux上,使用此操作时没有问题:
s->voti->next
但在DevC ++中,在Windows上,它会导致分段错误:(
为什么呢?我究竟做错了什么? :(
找到完整的代码here
答案 0 :(得分:1)
我认为这不是一个好问题,但第187行的函数调用肯定没有在new_node->voti
传递给insertMateria
之前初始化。
答案 1 :(得分:1)
Dev-C ++ 不是编译器。这是一个IDE。它与MinGW GCC一起打包(即它是 GCC),这取决于您使用的Dev-C ++版本,但它可能是GCC的一个非常旧的版本。
所有这一切,这不是编译器之间的区别。如果取消引用无效指针(未初始化或分配有效地址),则后续行为未定义。 “未定义”包括在不同平台,不同编译器,不同编译器选项上的行为可能不同,甚至在同一台机器上的相同代码上执行不同的行为。
也就是说,在这种情况下,您的代码(在您发布的行之前)是错误的,而不是编译器。它在Linux和Windows上可能都是不正确的,但“未定义”行为与预期的完全不同。