https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63640

Joost VandeVondele <Joost.VandeVondele at mat dot ethz.ch> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |Joost.VandeVondele at mat dot 
ethz
                   |                            |.ch

--- Comment #1 from Joost VandeVondele <Joost.VandeVondele at mat dot ethz.ch> 
---
this rather is a misunderstanding, allocatables are not necessarily freed at
the end of the main program. For example this is leak free:

> cat PR63640.f90
subroutine testmv3
  type bar
    integer, allocatable  :: ia(:), ja(:)
  end type

  integer, allocatable  :: ia(:), ja(:)
  type(bar), allocatable :: sm,sm2

  allocate(sm)
  allocate(sm2)
  allocate(sm%ia(100),sm%ja(100))
  allocate(sm2%ia(1000),sm2%ja(1000))
  allocate(ia(100),ja(1000))

  call move_alloc(ja,ia)
  call move_alloc(sm%ia,sm2%ia)

  call move_alloc(sm%ja,sm2%ja)

end subroutine testmv3

call testmv3
END

BTW, to check for leaks, you can now use the following way to compile your
code:

gfortran -fsanitize=leak PR63640.f90

without the need to run under valgrind.

Reply via email to