DevC + +和gcc之间存在差异的问题

时间:2013-02-03 09:00:53

标签: c gcc dev-c++

在gcc中,在linux上,使用此操作时没有问题:

s->voti->next

但在DevC ++中,在Windows上,它会导致分段错误:(

为什么呢?我究竟做错了什么? :(

找到完整的代码here

  • 第82行 cur = cur-&gt; next 应该等于 s-&gt; voti = s-&gt; voti-&gt; next < / strong>)

2 个答案:

答案 0 :(得分:1)

我认为这不是一个好问题,但第187行的函数调用肯定没有在new_node->voti传递给insertMateria之前初始化。

答案 1 :(得分:1)

Dev-C ++ 不是编译器。这是一个IDE。它与MinGW GCC一起打包(即它 GCC),这取决于您使用的Dev-C ++版本,但它可能是GCC的一个非常旧的版本。

所有这一切,这不是编译器之间的区别。如果取消引用无效指针(未初始化或分配有效地址),则后续行为未定义。 “未定义”包括在不同平台,不同编译器,不同编译器选项上的行为可能不同,甚至在同一台机器上的相同代码上执行不同的行为。

也就是说,在这种情况下,您的代码(在您发布的行之前)是错误的,而不是编译器。它在Linux和Windows上可能都是不正确的,但“未定义”行为与预期的完全不同。