分配给未分配的变量

时间:2017-05-31 21:07:19

标签: fortran gfortran allocation

我的代码中的一行将数组分配给未分配的数组。我认为这是一个错误,但令我惊讶的是它工作得很好。

program test
implicit none
    real, allocatable :: x(:,:)
    real :: y(2,2)

    y = 1.
    x = y

    print*, x
end program test

这如何在记忆方面起作用?这里的=运算符只是同时分配和分配?为什么这可能,为什么编译器不抱怨?我正在使用gfortran 5.4.0。

2 个答案:

答案 0 :(得分:1)

自Fortran 2003起,可运行时将自动分配(或在形状发生变化时重新分配)可分配数组。例如,参见NAG编译器https://www.nag.com/nagware/np/r61_doc/nag_f2003.pdf的Fortran 2003功能,或者在gfortran https://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html#Error-and-Warning-Options的文档中查找“realloc”

答案 1 :(得分:0)

这是正确的,根据第7.2.1.3节,"对内在任务的解释" WD 1539-1,第3段。