7

我在使用一些用于研究的旧代码时遇到问题,我想使用英特尔 Fortran 编译器进行编译。在一个特定的子例程中,除非我添加一个write只输出循环索引值的语句,否则我会遇到分段错误。

do j=1,ne

SOME STUFF

write(*,*) 'j=', j

end

是什么导致了我的错误,以至于这个 write 语句可以修复我的分段错误?(注意:j 被声明为整数)

谢谢,基利

4

1 回答 1

6

通过插入写入语句来“修复”此类错误的经典方法:

  1. 离开数组的末尾——使用你的编译器打开边界检查和调试选项来检查这个;

  2. 提供给子程序的论点与预期的论点之间存在分歧。同样,如果可能,请使用您的编译器,否则请使用您的眼睛。

赔率是 5 比 1,其中之一是原因。

于 2009-08-26T11:17:49.583 回答