fortran程序的内存管理很不方便,对于自定义的数据类型需要在程序中手动分配和释放内存,但有时候可能会忘记释放内存,造成内存泄露。所以对于自定义的数据类型最好绑定一个final程序,该程序会在这个类的对象需要销毁的地方自动调用。这些地方包括:
以下通过learn_final模块进行说明。
learn_final 模块
|
|
final程序的输入只有一个参数,类型必须使用type而不是class,intent属性不能为(out)。 参数可以是标量或数组,也可以是elemental 程序。在该模块中为了测试在哪儿会自动调用final程序,在final程序中有 print 子句,所以不能为elemental程序。
程序结束
在程序结束会自动调用。
结果
|
|
可以看到在程序结束的时候自动调用了final程序。
intent(out)
传递给intent(out)形参会自动调用。
结果
|
|
可以看出程序在调用 allocate函数以及程序结束时都调用了final程序。
deallcate
使用deallocate释放内存。
结果
|
|
可以看出程序在调用deallocate时调用了final程序。