我遇到了一些用于研究的旧代码,我想用英特尔Fortran编译器进行编译。在特定的子例程中,除非我添加只输出循环索引值的write
语句,否则会出现分段错误。
do j=1,ne
SOME STUFF
write(*,*) 'j=', j
end
什么可能导致我的错误,这样写的语句将修复我的分段错误? (注意:j被声明为整数)
感谢, keely
答案 0 :(得分:6)
导致此类错误的经典方法,通过插入write语句来“修复”:
走出数组的末尾 - 使用编译器打开边界检查和调试选项来检查这一点;
提供给子程序的参数与预期的参数之间存在分歧。再次,如果可能的话,使用你的编译器,否则你的眼睛。
赔率是5比1,其中一个是原因。