我是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程序中处理大型数据集吗?
谢谢