在我的代码中,由于我使用的机器存在内存问题,因此我想在传递参数期间分配尽可能少的内存。我的示例代码:
program test
double precision, ALLOCATABLE :: arrayA(:)
allocate (arrayA(n))
call mySub (arrayA)
deallocate (arrayA)
stop
end
subroutine mySub ( arrayB )
double precision, ALLOCATABLE :: arrayB(:)
allocate (arrayB(n))
! operations with arrayB
return
end
在主程序中,我必须使用堆内存。我还想在我的子程序中使用堆内存。根据我所做的搜索,它给出了运行错误(尝试分配已分配的数组'arrayb')。
因此,我的目的是在我的子例程中也使用堆内存,并在参数从程序传递到子例程期间分配尽可能少的内存,就像上面的代码一样。现在,我想我会做复制作业,但据我所知,这并不好。我检查了模块、接口和包含块,但不清楚哪一个可以通过 allocatabel 数组在内存中节省一些空间。我感谢任何符合我目的的帮助。