В своем коде на Фортране я хочу использовать зубчатые массивы с несколькими уровнями распределения. Пример кода того, что я имею в виду,
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
Я хочу реализовать эту стратегию программирования, чтобы сохранить память. Я знаю, что память, сохраненная в этом примере, не слишком велика, но для моего реального проекта я работаю с гораздо большими структурами данных. Мне было интересно, есть ли какие-либо опасности с этой практикой программирования, например, данные не хранятся непрерывно или более подвержены утечкам памяти. Или это полезный способ экономии памяти без многих недостатков? Спасибо.