GC: finalization order?!
Jonathan M Davis
jmdavisProg at gmx.com
Sat Feb 19 18:06:43 PST 2011
On Saturday 19 February 2011 12:34:39 Johannes Pfau wrote:
> Jonathan M Davis wrote:
> >IIRC, class destructors aren't supposed to reference any references or
> >pointers to the heap. They're intended for cleaning up other
> >resources. I don't think that there are any guarantees with regards to
> >the order of the destruction of objects which are being garbage
> >collected. But I don't mess with destructors much, so I'm not all that
> >well versed in the details.
> >
> >- Jonathan M Davis
>
> I think destructors shouldn't use references to the _garbage collected_
> heap. Freeing resources which were allocated with malloc should work.
> In fact freeing C memory is the only usecase for destructors I can
> think of. If you rely on destructors to release file handles / gpu
> textures / other limited resources you risk to run out of those.
Yes. You're right. They can reference the non-GC heap just fine. It's just that
they can't reference the GC heap - probably because the destructor order is
indeterminate and so that the GC doesn't have to worry about dealing with
circular references between garbage collected objects.
- Jonathan M Davis
More information about the Digitalmars-d-learn
mailing list