下边的文字来自于visual Fortran 6.5 help 文档,Thanks for the Editor of the document. I just translate it. Enjoy.
动态内存分配数据对象可以是静态的也可以是动态的。
如果数据对象是静态的,在编译的时候,就会给数据对象给定一定数量的内存,并且在执行期间直到程序退出才会释放这些内存。如果数据对象是动态的,对象所需要的内存可以在程序运行的过程中被创建、修改和释放。
在Fortran 95/90中,指针、可变数组和自动数组都是动态数据对象。
对于指针而言,直到指针被使用allocate语句赋值或者指针被指向一个动态的目标,才会有存储空间。指针可以使用NULLFY语句从目标上动态的移除。
Allocate 语句也可以为一个动态数组创建存储空间。而deallocate语句可以用于释放用前面的allocate语句创建的存储空间。
自动数组与可变数组的区别在于他们是在流程进入到一个过程后自动的生成和释放的。
声明型语句:
ALLOCATABLE : 用于申明数组是动态可分配的。
Pointer : 申明是指针类型的变量。
可执行语句:
创建存储空间:
allocate : 该语句即可以用于动态数组也可以用于指针的内存分配。
释放存储空间:
deallocate : 该语句可以用于释放由allocate 创建的动态数组和指针的存储空间。
NULLIFY :用于解除指针与目标之间的关联,尤其是指针不是由allocate创建分配的内存。
ASSOCIATED :用于测试当前指针是否有目标与其关联,(这里需要注意,所有建立但未初始化的指针的关联状态都是不确定,在这种情况下,该函数返回的逻辑值是不可信的.)
pointer-object => target :指针的赋值和传值标记。