https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91668
Bug ID: 91668 Summary: Failure to deallocate ALLOCATABLE component of a type in a POINTER array of types on deallocation of POINTER array Product: gcc Version: 8.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: c.s.brady at warwick dot ac.uk Target Milestone: --- A POINTER array of derived types having allocatable subcomponents does not deallocate the subcomponents when the POINTER array is deallocated. If the array of derived types is ALLOCATABLE rather than POINTER the deallocation of the subcomponents occurs as expected. I believe that this behaviour is not correct within the F2003 or newer standards. Testing the below code with valgrind shows 4000 bytes definitely lost. PROGRAM alloc_test TYPE :: subtype INTEGER, DIMENSION(:), ALLOCATABLE :: alloc END TYPE subtype !Switching POINTER to ALLOCATABLE prevents the loss of memory TYPE(subtype), POINTER, DIMENSION(:) :: test ALLOCATE(test(10)) DO i = 1, 10 ALLOCATE(test(i)%alloc(100)) END DO DEALLOCATE(test) END PROGRAM alloc_test