在fortran中释放指针数组

时间:2013-07-05 17:31:47

标签: fortran90

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

谢谢

0 个答案:

没有答案