Fortran では、配列代入で割り当てられていない割付け配列を使用すると、実行時エラーが発生することが予想されます。しかし、割り当て中に割り当て可能な配列が割り当てられたことがわかりました。これは危険な設計のようです。誰かがこのデザインの理由を説明できますか? コード例は次のとおりです。
module yj_mod
real,dimension(:,:),allocatable :: den_i_right
end module yj_mod
program main
call p()
end program main
subroutine p()
use yj_mod,only : den_i_right
implicit none
real :: a(3,4)
a=3.0
den_i_right=a
write(*,*) size(den_i_right,1), size(den_i_right,2)
end subroutine p
上記のコードを gfortran でコンパイルしました。コードを実行するden_i_right
と、同じ形状の配列になることが示されますa