- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Consider this: module memory implicit none Type :: MyType real X(50000) end type type M class(MyType), allocatable :: mem contains ! final :: testfree end type contains ! subroutine testfree(this) ! Type(M) this ! if (allocated(this%mem)) deallocate(this%mem) ! end subroutine testfree subroutine local(A) Type (M) :: A, B B=A end subroutine local subroutine testmem Type(M) :: X integer i allocate(MyType::X%mem) do i=1, 1000 call local(X) end do end subroutine testmem end module memory
My understanding is that allocatable components of types are supposed to be deep copied and deallocated automatically as appropriate. However calling "testmem" when compiled wtih ifort gives a memory leak, which can be fixed by uncommenting the explicit final. What exactly are the rules here, or is it a compiler bug? (changing the component to a Type rather than Class there is no leak).
Link Copied
3 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
It's a bug.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I think this is the same as our issue DPD200252621, described in http://software.intel.com/en-us/forums/topic/500281 ; It is not yet fixed. I will verify that it's the same bug.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Fixed in 15.0.

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page