Как Фортран освобождает связанные списки?

Я хотел бы использовать связанные списки в Fortran для хранения массива данных неопределенной длины.

У меня следующая настройка:

TYPE linked_list
    INTEGER :: data
    TYPE(linked_list) :: next_item => NULL()
END TYPE

Теперь предположим, что я создаю такой список:

TYPE(LINKED_LIST) :: example_list
example_list%data =1
ALLOCATE(example_list%next_item)
example_list%next_item%data = 2
ALLOCATE(example_list%next_item%next_item)
example_list%next_item%next_item%data = 3

У меня вопрос, если я выполню:

DEALLOCATE(example_list)

будут ли все вложенные уровни также освобождены или мне нужно пройти по списку к самому глубокому элементу и освободить от самого глубокого элемента вверх?

7
задан milancurcic 8 February 2012 в 00:20
поделиться