说我有下面的代码:
program test
call foo
call foo
contains
subroutine foo
integer(8),dimension(:),allocatable:: var1
allocate(var1(10))
...
return
end subroutine foo
end
将变量VAR1获得分配两次? (我猜是)。 如果分配给每个呼叫,将分配的内存中的第一个电话变成免费的吗?
说我有下面的代码:
program test
call foo
call foo
contains
subroutine foo
integer(8),dimension(:),allocatable:: var1
allocate(var1(10))
...
return
end subroutine foo
end
将变量VAR1获得分配两次? (我猜是)。 如果分配给每个呼叫,将分配的内存中的第一个电话变成免费的吗?
VAR1将(尝试)来分配每个ALLOCATE语句时执行(即foo的过程被称为每次)。
下的Fortran 90的规则(仅)foo的分配状态成为在过程结束时未定义的。 未定义分配状态的变量便无法使用 - 你不能在合法的程序的后续调用重新分配。
在Fortran 95的,后来,因为它是一个局部的,非保存的变量,VAR1将被释放foo的程序的每一次执行结束。