与标题一样简单。我有一个学生出现细分错误,我试图向他证明为什么会这样。相反,我最终想知道为什么不这样做。
代码是这样的:
program main
implicit none
real*8, allocatable:: u(:)
integer :: i
allocate(u(2))
do i=0, 1000
u(i) = i
print *, u(i)
enddo
end program main
我希望它会在i=3
崩溃,但事实并非如此。与ifort和gfortran一起使用-O0到-O3编译
答案 0 :(得分:1)
打开边界检查选项进行编译,然后向学生解释,如果没有额外的边界检查开销,则段错误是越界访问的常见结果?