[問題] pointer串列的問題
我有數據產生時用這樣的資料結構儲存,
integer(4) :: N
type link
real(8) :: a
type(link),pointer :: next
end type
type(link),dimension(:),allocatable :: H
type(link),pointer :: p
N=1234567 ! 計算N的大小,假設N=1234567
allocate(H(N))
然後開始產生數據,數據做好之後會像這樣的結構,
┌─┐ ┌─┐ ┌─┐
H(1)│%a╞>│%a╞>│%a╞>null()
└─┘ └─┘ └─┘
┌─┐ ┌─┐
H(2)│%a╞>│%a╞>null()
└─┘ └─┘
...
┌─┐ ┌─┐ ┌─┐ ┌─┐
H(N)│%a╞>│%a╞>│%a╞>│%a╞>null()
└─┘ └─┘ └─┘ └─┘
數據產生出來就複製到另一個陣列去,然後把 H(:) 殺掉,
deallocate(H)
這樣的subroutine會一直重複很多次,我的問題是:
是不是我只要 deallocate(H) 就可以把所有的記憶體都釋放出來?
還是我必須把每一個H(1),H(2),...,H(N)裡面每一個pointer都deallocate?
我擔心的問題是這個subroutine重複做了很多次之後,會不會有愈來愈多
記憶體不能用?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.251.193.212
→
11/23 00:29, , 1F
11/23 00:29, 1F
→
11/23 00:29, , 2F
11/23 00:29, 2F
→
11/23 00:59, , 3F
11/23 00:59, 3F
→
11/23 01:00, , 4F
11/23 01:00, 4F
推
11/23 10:58, , 5F
11/23 10:58, 5F
→
12/04 17:34, , 6F
12/04 17:34, 6F
Fortran 近期熱門文章
PTT數位生活區 即時熱門文章