Destructors vs. Finalizers

Dgame via Digitalmars-d digitalmars-d at puremagic.com
Wed Jul 26 12:18:48 PDT 2017


On Wednesday, 26 July 2017 at 18:33:58 UTC, Moritz Maxeiner wrote:
> On Wednesday, 26 July 2017 at 17:38:28 UTC, Dgame wrote:
>> I don't get it. The GC collects the objects which aren't in 
>> use anymore. The order in which this is currently happening is 
>> not specified. So, how are the destructors supposed to be 
>> called in the right order? Manually? ARC?
>
> After the split:
> Destructors are only for deterministic end of object lifetime, 
> so yes, they are to be called by any scheme (such as manual 
> management via destroy and reference counting - which is likely 
> also implemented as calling destroy) that is deterministic.
> Finalizers are for nondeterministic schemes such as the GC.
> The GC *never* calls destructors directly, only finalizers.
> A finalizer might manually call a destructor, but a destructor 
> may never call a finalizer.

Alright, thanks for the clarification. I've briefly hoped for 
some sort of miracle such as deterministic object lifetime 
without manual interaction. :)


More information about the Digitalmars-d mailing list