Me gustaría utilizar listas vinculadas en Fortran para mantener una matriz de datos de una longitud indefinida.¿Cómo desasigna Fortran las listas vinculadas?
tengo la siguiente configuración:
TYPE linked_list
INTEGER :: data
TYPE(linked_list) :: next_item => NULL()
END TYPE
Ahora dicen que puedo crear una lista de este tipo:
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
Mi pregunta es, si realizo:
DEALLOCATE(example_list)
hará todo el los niveles anidados también se desasignan o necesito atravesar la lista hasta el elemento más profundo y desasignar desde el elemento más profundo t hacia arriba?
Ha sido un largo tiempo desde que hice esto en Fortran, pero estoy bastante seguro de que tiene que cancelar la asignación manualmente. Si desasigna la cabeza, perderá la referencia y tendrá una pérdida de memoria. – ChrisF
Sí. Tenía mucho miedo de eso. Debo decir, sin embargo, estoy teniendo problemas, ¿cuál es la frase, rodando mi propia colección de basura? – EMiller
No puede implementar Fortran administrado por memoria. –