私はFortranが初めてです。ポインターの配列に関する問題に直面しています。Fortran90 でコードを書いています。データのサイズが大きいため、ポインターの配列を使用する必要があります。擬似コードはこんな感じ
type ::a
integer ::Id
real ::Coords(3)
end type a
type ::b
type(a),pointer ::Member
end type b
type(b),allocatable ::data(:)
integer ::i
!allocation and assigning
allocate(data(n))
do i=1,n
allocate(d(i)%member)
d(i)%member%Id = i
d(i)%member%Coordinates(:) = i*2.0
end do
!Some stuff using data
!De allocation
do i=1,n
deallocate(d(i)%member)
end do
deallocate(data)
この方法でポインターの配列の割り当てを解除すると、非常に時間がかかることがわかりました。数百万のデータセットを扱う場合、これを行うにはかなりの時間がかかります。これをしないと、メモリが解放されません。プログラムを終了せずに、新しいサイズ (疑似コードの新しい n 値) を割り当ててデータを再利用したい。したがって、配列の割り当てを解除せずに逃げることはできません。そうしないと、次の作業を行うための十分なメモリが利用できなくなります。
Fortranでポインターの配列の割り当てを解除する他の方法があるかどうか、誰かが私に提案できますか? または、Fortran プログラムで大きなデータセットを処理できますか?
ありがとう