为什么我们需要Fortran中的可分配数组?

时间:2016-04-14 01:27:01

标签: memory-management fortran

我是Fortran的新手。我的问题是为什么我们需要Fortran中的可分配数组?我知道一个好处是你不需要事先知道尺寸。但是还有性能原因吗?

例如,在使用该数组之后将来不再重用,我们将释放该数组。与不使用可分配数组(即常规数组)相比,这种解除分配有助于释放更多内存吗?

2 个答案:

答案 0 :(得分:3)

可分配阵列有两个目的:

  1. 您不必在编译时知道数组的大小。
  2. 您可以最大限度地减少内存使用。
  3. 如果没有可分配的数组,则必须选择足够大的静态数组大小以适应任何可能的大小,这意味着在大多数情况下,您将使用远远超过必要的内存。如果您错误判断了可能的大小,则需要更改代码并重新编译。

    静态数组也会在它们在范围内的整个持续时间内消耗它们的内存,因此对于主程序中的数组来说,这将是整个运行时。如果你不再需要它们,可以(并且应该)释放可分配的数组,以便最大限度地减少内存使用。

    (在可分配数组之前,你可以使用public void getData(Callback<List<Result>> response); 语句来创建不同的变量,如果你知道你不会同时需要它们,那么数组会使用相同的物理内存。)

答案 1 :(得分:2)

我知道我不应该......但是

  

...我们不需要任何可分配的可分配数组,我们编程   没有他们的FORTRAN已有35年......只需将64K的RAM拿到一个   静态数组,我们将自己做内存管理,非常感谢   很多......

[穿着夹克咆哮,嘴里发泡。]