首页 > 解决方案 > 如何在 Fortran 中释放所有分配的内存?

问题描述

不确定这是否可能,但尽管如此。

我有一个大型 Fortran90 代码(不是我编写的),我希望使用 python 和 mpi4py 运行。而不是生成 Fortran 可执行文件的多个实例,我想生成一次,并多次循环该程序。这是我以前做过的事情,效果很好。然而,这个 Fortran 代码相当庞大,与我用这种方法处理过的以前的代码相比相当复杂。

我的问题是 - 是否有一种简单的方法可以在每个循环结束时从程序内部拆除和释放所有已分配的数组(我不必检查整个代码并确保所有内容都已手动释放)。目前,如果我遍历代码的主体,它会在第二次通过循环时出错,因为它试图分配一个已经分配的数组。

标签: fortranfortran90

解决方案


不,没有 deallocate all 命令可以解除程序中所有可分配实体的分配。您必须自己维护任何此类列表并自行解除分配。

您可以使用 Fortran 中的自动解除分配功能,但这仅适用于局部变量。不适用于模块或主程序中的实体。


推荐阅读