DevC与x2B之间的差异问题+;和海湾合作委员会

DevC与x2B之间的差异问题+;和海湾合作委员会,c,gcc,dev-c++,C,Gcc,Dev C++,在gcc中,在linux上,我使用此操作没有问题: s->voti->next 但在windows上的DevC++中,它会产生分段错误:( 为什么?我做错了什么( 找到完整的代码 第82行(cur=cur->next应等于s->voti=s->voti->next) 我认为这不是一个好问题,但第187行的函数调用在传递给InsertMaterial之前肯定没有初始化new\u node->voti

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

s->voti->next
但在windows上的DevC++中,它会产生分段错误:(

为什么?我做错了什么(

找到完整的代码

  • 第82行(cur=cur->next应等于s->voti=s->voti->next

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

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


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

请大家耐心等待这是OP在表决或结束前提出的关于SoF的第一个问题。请花时间提出如何改进问题。通常最好只隔离一小部分代码,足以隔离问题,以便获得更好的答案。Stack Overflow为了社区的利益无限期地维护问题。链接到临时非现场位置的代码是没有帮助的,因为当链接过期时,这个问题会变得不那么有用,特别是因为这个代码似乎不是问题中的代码(w.r.t.第82行?)。它也可以打包成一个全新的TDM-GCC版本。。@奥威尔:我知道那个项目,这就是为什么我问这个版本。我猜这是你的项目?