为清楚起见,让我们将静态数组定义为形状和边界在编译时已知的数组,并将自动数组定义为形状和边界在编译时未知但不是allocatable
数组的数组Fortran。在Fortran中,自动数组只能出现在subroutine/function
中。并且save
不允许用于自动数组。
在subroutine/function
中,可以通过指定save
在调用之间保留静态数组的值。考虑不为save
中的静态数组指定subroutine
的情况。然后,每次子例程返回时,静态数组都会自动释放吗?如果是这种情况,则静态数组的行为与自动数组相同,这意味着与自动数组相比没有性能优势。是否有可能在运行开始时就分配了所有静态数组,并且在程序结束之前永远不会释放它们?