Перехват неинициализированных распределенных массивов в FORTRAN 90

Я компилирую с gfortran 5.4.1 и ifort 17.0.1

В следующем коде:

program check
   implicit none
   real, dimension(:), allocatable :: hello
   real :: g,h,i
   allocate(hello(5))
   g = hello(1)
   h = g + 10.0
   i = hello(2)*5
   print *, hello,g,h
end program check

Мы выделяем массив hello, но никогда не инициализируем его. Затем мы используем этот неинициализированный массив, чтобы установить значение, сделать два вычисления, а затем распечатать все это.

На мой взгляд, ничего из этого не должно работать. Что такое привет (1)? После выполнения кода весь массив обнуляется. Далее, как я могу найти ошибку? Когда я компилирую с -Wall (gfortran) и -warn неинициализирован -O0 (ifort), код работает и компилируется нормально.

Кто-нибудь знает, что мне не хватает??

0 ответов

Другие вопросы по тегам