私のコードでは、使用しているマシンが原因でメモリの問題が発生しているため、引数を渡すときにできるだけ少ないメモリを割り当てたいと考えています。私のコード例:
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
メイン プログラムでは、ヒープ メモリを使用する必要があります。また、サブロチュインでヒープメモリを使用したいと考えています。Acc を検索すると、実行エラーが発生します (既に割り当てられている配列 'arrayb' を割り当てようとしています)。
したがって、私の目的は、サブルーチンでもヒープ メモリを使用し、上記のコードのようにプログラムからサブルーチンへの引数の受け渡し中に可能な限り最小のメモリを割り当てることです。今、私はコピー課題をしていると思いますが、私が知っているように、それは良くありません。モジュール、インターフェイス、およびブロックを含むことを確認しましたが、allocatabel 配列を使用してメモリ内のスペースを節約するのにどれが適しているかは明確ではありません。私の目的に合った助けをいただければ幸いです。