Print

Print


The code looks fine.  It is your understanding of what top reports and
the OS is doing that is lacking.  I suspect you are on an UNIX system,
which means memory is not returned to the OS until the process exits or
it needs it for something else and it is recaimed during garbage
collection.

|  | |  | |  |    Roderick (Rod) W. Failing III
|  | |  | |  |    Engineering Specialist
|  | |  | |  |    Williams International
|__| |__| |__|    2280 West Maple Road
 ____________     Walled Lake, MI  48390-0200
|            |    email: [log in to unmask]
|____________|    Phone: (248) 624-5200 ext. 1930
                  Fax: (248) 669-5018
 


-----Original Message-----
From: Fortran 90 List [mailto:[log in to unmask]] On Behalf
Of Daniel Hoult
Sent: Friday, November 17, 2006 16:01
To: [log in to unmask]
Subject: Deallocating Linked Lists

I am not sure where the problem lies, but I am having trouble
deallocating memory used by linked lists.  To see if I made some sort of
error in my code, I simply wrote the following small test program - the
same as any other example you can find on the web.  The size of and data
for the linked list were arbitrary.  I am using the 'top' command to
check my memory usage
- 62 MB.  However, even after deallocating the entire list, the memory
usage doesn't change.  Anyone know what I'm doing wrong?

Thanks!


program linked
   implicit none
   type node
      integer :: value
      type(node), pointer :: next
   end type node
   integer :: counter
   type(node), pointer :: list, current

   nullify(list)
   do counter = 1, 1000000
      allocate(current)
      current%value = 5
      current%next => list
      list => current
   end do

   pause

   current => list
   do
      if (.not. associated(current)) exit
      list => current%next
      deallocate(current)
      current => list
   end do

   pause

end program linked