在我的 Fortran 代码中,我想使用具有多级分配的锯齿状数组。我的意思的示例代码是
module nonsquare_matrix_mod
implicit none
type :: nonsquare_matrix
integer :: d
real*8, dimension(:), allocatable :: vector
end type nonsquare_matrix
type(nonsquare_matrix),dimension(:),allocatable :: mymatrix
end module nonsquare_matrix_mod
program nonsquare_matrix_test
use nonsquare_matrix_mod
implicit none
integer, parameter :: max_size=50
integer :: i
allocate(mymatrix(max_size))
do i=1,max_size
allocate(mymatrix(i) % vector(i))
end do
print *, "allocated"
end program
我想实现这种编程策略以节省内存。我知道这个例子中节省的内存不是太大,但是对于我的实际项目,我正在使用更大的数据结构。我想知道这种编程实践是否存在任何危险,例如数据没有连续存储或者更容易出现内存泄漏。或者这是一种节省内存而没有很多缺点的有用方法?谢谢。