Tôi muốn sử dụng danh sách được liên kết trong Fortran để giữ một mảng dữ liệu có độ dài không xác định.Fortran deallocate danh sách liên kết như thế nào?
tôi có các thiết lập sau:
TYPE linked_list
INTEGER :: data
TYPE(linked_list) :: next_item => NULL()
END TYPE
Bây giờ nói tôi tạo ra một danh sách như vậy:
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
Câu hỏi của tôi là, nếu tôi thực hiện:
DEALLOCATE(example_list)
sẽ tất cả các mức lồng nhau cũng được deallocated hoặc tôi cần phải đi qua danh sách để các yếu tố sâu sắc nhất và deallocate từ elemen sâu nhất t lên?
Nó được một thời gian dài kể từ khi tôi đã làm điều này trong Fortran, nhưng tôi khá chắc chắn bạn phải deallocate bằng tay. Nếu bạn chỉ cần deallocate đầu, sau đó bạn sẽ mất các tài liệu tham khảo và có một rò rỉ bộ nhớ. – ChrisF
Có. Tôi khá sợ điều đó. Tôi phải nói mặc dù, tôi đang gặp rắc rối, cụm từ đó là gì, lăn bộ sưu tập rác của riêng tôi? – EMiller
Bạn không thể triển khai bộ nhớ fortran được quản lý. –