When is a class's destructor called?

Dicebot public at dicebot.lv
Sun Dec 29 02:44:33 PST 2013


Also destructors are not guaranteed to be run by D specification. 
It is perfectly legal to skip such cleanup step upon program 
termination.

http://dlang.org/class.html#destructors :

"The garbage collector is not guaranteed to run the destructor 
for all unreferenced objects. Furthermore, the order in which the 
garbage collector calls destructors for unreference objects is 
not specified. This means that when the garbage collector calls a 
destructor for an object of a class that has members that are 
references to garbage collected objects, those references may no 
longer be valid. This means that destructors cannot reference sub 
objects. This rule does not apply to auto objects or objects 
deleted with the DeleteExpression, as the destructor is not being 
run by the garbage collector, meaning all references are valid."


More information about the Digitalmars-d-learn mailing list