In Fortran, if I have an allocatable array of derived types, each consisting of a pointer and an allocatable array,
type group
real, pointer :: object
real, allocatable :: objectData(:,:)
end type group
type(group), allocatable :: myGroup(:)
would I be able to deallocate all memory contained in this type by simply making a single call
deallocate(myGroup)
or do I need to deallocate the arrays within each type first, before deallocating the derived type:
do i = 1, size(myGroup)
nullify(myGroup(i)%object)
deallocate(myGroup(i)%objectData)
end do
deallocate(myGroup)
I'm leaning towards option 2 and nullifying all memory before deallocating the derived type, if not just to ensure that memory leaks aren't happening, but if option 1 is equivalent then that would be useful for future reference and save me a few lines of code.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…