unallocating memory (again)

Bob Calbridge bobc at attctc.Dallas.TX.US
Mon Jan 15 09:26:44 AEST 1990


Time for my next question.  I recall that some discussion on this has gone 
before.  I have a program that allocates several areas of heap space.  When
I try to free() the areas I don't end up with the same amount of core space
as I did going into the routine.  Here is the order in which I allocate it.

	Area 1. Medium - about 1K to 5K
	Area 2. Large  - 11 sub-areas of 10K each
	Area 3. Small  - Possibly unlimited number of tiny linked lists

When I free space I free area 3 first although this is hard to pin down since
the area is pretty much intermingled.  I then free area 2 and then 1.  
Since the program can run this portion of code several times at the user's 
option I checked to see if I lost the same amount each time.  I don't.  On the
first run I lose about 114K from my heap.  Each time I run it thereafter I lose
exactly 560 bytes.  I've tried to reconcile this with the size that each
call to malloc() performs (including overhead) and I can't get anything to 
work out to an even integer.  I think I understand how coreleft() works, so
I figure its a matter of one of the latter allocated spaces not getting 
free()ed.  Is that correct?  How can I tell if the space has been freed?
Is there anything other than coreleft() that can help me keep track of what
is and isn't doing the job?

Many thanks.
-- 
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
=    More stupid questions available on request from                          =
-     bobc at attctc                     Your humble servant (real humble)       -
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=



More information about the Comp.lang.c mailing list