假设我们定义为10种000派生类型的数组:内存占用
TYPE type1
integer :: i
real, dimension(:), allocatable :: real_array
END TYPE1
和
type(type1), dimension(1000) :: big_array
现在,我们已经在主程序下面的语句:
DO j=1,10
allocate(big_array(j)%real_array(100))
END DO
从部件11到部件big_array
1000中,real_array
是可分配的,但未分配,因为我不需要它。 (我以前十个组件为例,但它可以是任何下标)
这是内存使用情况/管理/效率问题吗? “未使用/未分配的可分配数组”的内存占用是多少?
如果我理解正确的话,通过声明明确形'big_array' type1'的',我创建1000个三分球/ real_array'的'描述符(可忽略千字节我同意,但是他们都存在),但这些指针不除了前10个指向由'allocate'语句指定的分配内存空间之外的引用,我正确吗? – Coriolis
是的,你是正确的,描述符在那里,但它们被标记为未分配/不指向任何地方。 –
最后,关于“随机”存储的答案的第一部分更具体一点,你的意思是说,每个“real_array”的组件都是非连续存储的?通过声明显式形状数组big_array,它的组件是否连续存储? – Coriolis