Fortran指针及其内存使用情况

时间:2015-04-15 20:22:24

标签: pointers memory fortran

我知道C指针是"一个保存地址的变量。" Fortran指针怎么样?可以通过将Fortran指针指向目标或使用allocate语句来分配Fortran指针。在两种情况下,指针的内存使用情况如何?让我们说我有一个指针:

pb => b(101:200)

是否正确地说pb只占用32位内存(如果在32位可执行文件上编译)来存储b(101)的地址而另外32位来存储元素的数量(100)? 如果我有:

pb => b(5,1:10)

我想也必须存储步幅,所以指针总共需要3 * 32位,是否正确? 但是当我分配一个指针:

Allocate(pb(1:100))

我实际上是为该指针保留了100个内存位置吗?我在这里很困惑。任何人都可以澄清一下吗?

感谢 阿尔贝托

1 个答案:

答案 0 :(得分:1)

一般来说,fortran数组(不仅是指针)可以与包含地址(32或64位),下限和上限以及步幅的描述符相关联。当通过参数将数组传递给等待假定形状数组的过程时,通常使用这种描述符。

当直接分配一个变量声明指针时,该指针与上面的描述符及其相关数组相关联。

从一般的角度来看,不建议直接分配指针(例如,有时链接列表需要这样做)。我通常只分配可分配的数组,而我只使用指针指向已经分配的内存区域。

可分配变量的设计绝不会涉及内存泄漏!

Fortran指针的行为与C指针不同。你必须明白Fortran指针实际上是它所指向的相关内存的别名(别名而不是指针本来就是一个更好的名字)。