memory-management - Fortran:模块中的可分配变量

标签 memory-management module fortran

我想使用一个数组 Ar(-3:3, 5),它是模块全局中的一个可分配变量,并在一个子例程中分配它并在下一个子例程中访问它(请参见下面的代码片段)。第二个子例程中的索引是从 -3 到 3 和从 1 到 5,还是我必须在子例程中指定?

module global
   real, allocatable(:,:) :: Ar
end module global

subroutine allocateAr
   use global

   ALLOCATE(Ar(-3:3, 5))
end subroutine allocateAr

subroutine useAr
   use global

   Ar(-3,1)=3.0  !is this -3,1 here or do I have to use 1,1????
end subroutine useAr

最佳答案

如果您将可分配数组作为可分配数组访问,则它们始终保留其边界。这意味着甚至可以直接使用“使用关联”或“主机关联”,如子例程 useAR 中所示,或者将它们作为可分配的虚拟参数传递。如果将它们作为假定形状或假定大小数组传递,则必须在每个调用的过程中指定下限,否则它将默认为 1。

因此,就您的情况而言,您可以使用 -3,1

否则我同意 Jonathan Dursi 关于全局可变状态的观点。

关于memory-management - Fortran:模块中的可分配变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16278866/

相关文章:

c++ - 如何判断一个进程 "virtual size"(WinXP)?

css - 使用嵌套选择器和 vuejs CSS 模块

file - fortran读取二进制文件

python - 是否可以使用 python 将磁盘上的不连续数据映射到数组?

recursion - Fortran 递归段错误

c++ - 如果我在 C++ 中的一个线程中分配内存,我可以在另一个线程中取消分配它吗

objective-c - 使用 NSKeyedArchiver 编码大型对象图会占用内存

multithreading - 线程是否可以访问同一进程的其他线程的堆栈?

javascript - Nodejs,最好有很多相同的要求或使用句柄?

linux - 为所有内核模块添加对符号的支持