[fpc-devel] Improving Ref Counting
Marco van de Voort
marcov at stack.nl
Sun Feb 27 14:36:58 CET 2005
> Marco van de Voort wrote:
> >>>a valid/invalid reference without accessing memory that is invalid in the mean
> >>>time.
> >>
> >>How does a GC do this? It would have the same problem?
> >
> >
> > A GC manages all memory, local variable allocation inclusive. IOW, the
> > way a GC does it, is not possible in a mixed environment.
>
> Are you saying it would be a managed pointer then which is allocated on
> the heap? (I had assumed the pointer would be on the stack and the
> object in the heap)
That is a solution yes. Or on the stack, but on termination the reference
is killed, and you are back at the try..finally again
> > It's very expensive. getmem is quite expensive, and you need it for every
> > reference this way.
>
> Okay then use Tlist with preallocation of say half a dozen references -
> that should be efficient for 99% of cases for an individual object's
> references.
Still an dyn allocation extra. Ansistring performance is partially bound
to it, and you double it.
> > Nothing is failsafe. However e.g. in RTL string routines exceptions
> > shouldn't occur unless memory is exhausted, in case it doesn't matter
> > much anyway.
>
> What about all other non string exceptions that can occur between
> creation and destruction of the ansistring?
They lead to mem leaks.
> Multithreaded environments too?
Yes.
More information about the fpc-devel
mailing list