作者callmei (挨)
看板Fortran
标题[请益] 非阵列动态记忆体ALLOCATE
时间Fri Aug 12 21:32:51 2011
原本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
1F:推 YCTzeng:好问题,我也想知道答案,希望有高手解答。 08/13 12:47