[fpc-devel] Ansistring and General Memory Management - Questions
Jonas Maebe
jonas.maebe at elis.ugent.be
Wed Feb 14 17:22:33 CET 2007
On 14 feb 2007, at 17:14, Jason P Sage wrote:
> If I allocate a large number of ansistrings of random lengths, change
> lengths, and then set them all to empty like this: MyAnsi:='' Does
> the heap
> release all that memory or does it hang on to it to "reuse" the
> various
> "chunks" that are not in use when appropriate?
It may hang around for a while. Whether or not it does depends on
many different factors, including the size of the block (blocks with
similar small sizes are allocated from pools, and a pool is only
released back to the OS if all blocks of a pool have been freed --
although one empty pool is always kept in order to avoid a border
condition where allocating/freeing a single block causes constant
allocating and freeing of a block from/to the OS).
> Note: I'm aware of heap trace but the nature architecture my
> project just
> does not agree with heap trace. Certain things I do purposely it
> mistakes as
> an error and these same "constructs" run leak proof in other
> applications.
Things which are flagged as errors by heaptrace are not leaks, but
writing past the boundaries of allocated memory blocks. This may also
lead to memory leaks due to corruption of the memory manager's
internal data structures.
Jonas
More information about the fpc-devel
mailing list