[請益] 非陣列動態記憶體ALLOCATE
原本FORTRAN就有支援動態記憶體陣列的操作,就是指下面這種操作
REAL*8,ALLCATABLE::A(:,:,:)
ALLOCATE( A(10,10,10) )
...CODE...
DEALLOCATE( A )
或是指標變數也可以ALLOCATE,
指標變數的ALLOCATE就比較像是C語言的動態記憶體陣列操作方式
陣列跟指標比較好理解
但是我在FORTRAN 2003的語法裡發現,2003不但陣列可以這樣做
連純量變數也可以
譬如
REAL*8,ALLCATABLE::A
ALLOCATE( A )
...CODE...
DEALLOCATE( A )
不知道這種動態記憶體的純量變數到底跟直接宣告的純量變數有什麼差異?
是否如果沒有ALLOCATE,A就不會佔據任何空間,也就是說記憶體裡根本沒A這變數??
然後就可以用這種方式 在需要A時就ALLOCATE,不需要時就DEALLOCATE,以節省空間?
但是一個純量變數根本占不到多少空間,即使一個雙精度浮點數也才8 bytes
所以不太能理解動態的純量變數這個功能的意義...
還是跟什麼HEAP與STACK記憶體操作有關?? 不太了解
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.218.94
推
08/13 12:47, , 1F
08/13 12:47, 1F
Fortran 近期熱門文章
PTT數位生活區 即時熱門文章