我有一个应该给出细分错误的Fortran程序,但它没有

时间:2019-10-01 14:12:39

标签: fortran segmentation-fault

与标题一样简单。我有一个学生出现细分错误,我试图向他证明为什么会这样。相反,我最终想知道为什么不这样做。

代码是这样的:

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编译

1 个答案:

答案 0 :(得分:1)

打开边界检查选项进行编译,然后向学生解释,如果没有额外的边界检查开销,则段错误是越界访问的常见结果?