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