2017-05-31 109 views
2

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

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

    y = 1. 
    x = y 

    print*, x 
end program test 

如何在内存方面工作的呢?这里的=运营商只是同时分配和指定?为什么这是可能的,为什么编译器不抱怨?我正在使用gfortran 5.4.0。

+0

的文件中寻找“realloc的”这可能是对同一事项的一个链接为重复的问题,而是以更清晰的方式问在我看来(也更容易找到)。所以即使它被标记为重复,我也会暂时离开它。 –

+0

你当然想保留这个问题。重复并非天生就不好。在所涉及的一个方面确实更清楚。 – francescalus

回答

0

这是正确的,根据第7.2.1.3节中,WD 1539-1“固有分配的解释”,第3段。