[請益] 非陣列動態記憶體ALLOCATE

看板Fortran作者 (挨)時間13年前 (2011/08/12 21:32), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/1
原本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
文章代碼(AID): #1EHIk6_W (Fortran)
文章代碼(AID): #1EHIk6_W (Fortran)