在 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