- 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