【问题标题】:Why does this 3-line gfortran code throw a segmentation fault?为什么这个 3 行 gfortran 代码会引发分段错误?
【发布时间】:2019-07-24 21:45:47
【问题描述】:

这个简单的 3 行 gfortran 代码在 OPEN 语句中生成“程序接收信号 SIGSEGV:分段错误 - 无效内存引用”。我做错了什么?

我已关闭(然后重新打开)“运行时检查”编译器开关:-fcheck= all 和 -fcheck=bounds。这样做没有任何改进。其他编译开关关闭。我还尝试在字符变量的 OPEN 语句中定义文件名。而且,没有任何改善。还尝试用双引号替换单引号。没有帮助。

  PROGRAM INTSFRACM_271
  OPEN(7,IOSTAT=IOS,FILE='namlist.int',STATUS='OLD')
  END

这是整个程序。

见上文。

【问题讨论】:

  • 您使用的是什么版本的 gfortran?
  • GNU Fortran (tdm-1) 5.1.0

标签: fortran gfortran


【解决方案1】:

因此,非常不幸的是,GFortran v5.1.0 是bugged,因此当OPENed 时,有效文件将导致段错误。尝试更新到 v5.2 或更高版本。

【讨论】:

  • 哇!非常感谢,克莱顿。我更新到 gfortran 8.1,并修复了它。我相信 5.1 是随代码块一起分发的默认版本。讨厌!
  • @dvdman:欢迎来到堆栈溢出。如果您发现这回答了您的问题,请选择它作为“已接受的答案”——这是在此表示感谢的最佳方式。
猜你喜欢
  • 2016-07-10
  • 2016-02-03
  • 1970-01-01
  • 1970-01-01
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-18
相关资源
最近更新 更多