Так же просто, как и название. У меня есть студент, который получил ошибку сегментации, и я пытался доказать ему, почему это происходит. Вместо этого я подумал, почему это не так.
Код такой:
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
, но это не так. Составлено с ифортом и гфортраном с -O0 до -O3