Восстановите хранилище неразмещаемых больших массивов в Фортране
Оператор deallocate используется для восстановления хранилища выделяемого массива, который больше не нужен. А как насчет неразмещаемых массивов? Предположим (в основной и единственной программе) есть объявление, подобное
INTEGER, DIMENSION(100,100) :: A
Этот массив используется один раз и не более. Что если я захочу освободить место?
1 ответ
Приведенный вами пример - это не размещаемый массив, а простой статический массив, который будет существовать только в той области, где он был создан. Память, выделенная статическому массиву, обычно освобождается, когда переменная выходит из области видимости, но это зависит от других ситуаций, например, неявного сохранения и т. Д.
Чтобы быть размещаемым массивом, он должен иметь ALLOCATABLE в своем объявлении. Кроме того, вам нужно выделить это.
Смысл распределенных массивов в том, что FORTRAN будет управлять освобождением для вас.
Как только массив выйдет из области видимости, Fortran освободит его для вас. Таким образом, нет риска утечки памяти с этим массивом.
Пример адаптирован из http://www.fortran90.org/src/best-practices.html
subroutine do_something
real(dp), allocatable :: lam
allocate(lam(5))
...
end subroutine do_something
В конце процедуры массив lam будет автоматически освобожден.