Bounty for -minimal compiler flag
Jacob Carlborg
doob at me.com
Sun Feb 16 03:43:21 PST 2014
On Sunday, 16 February 2014 at 02:57:25 UTC, Steven Schveighoffer
wrote:
> New is not the issue. The expectation, when I write my class,
> that it will be cleaned up by the GC, is the issue.
>
> I remember this little nugget of paradox from the documentation
> of classes:
>
> "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."
>
> So if you can write your class such that it will always require
> manual deletion, it's OK to refer to other GC'd objects in the
> destructor. Otherwise, it's not. Oh, and the runtime doesn't
> tell you when you're in the GC :)
>
> This leads us to the fun problem:
>
> 1. Without a GC, a destructor is REQUIRED to clean up owned
> resources that were (likely) malloc'd.
> 2. With a GC, a destructor is REQUIRED to NOT clean up owned
> resources that were GC'd.
>
> How to write such a destructor?
In D1 Tango added a new method, "dispose", to Object. This method
is called when an object is destroyed either when calling
"delete" or when going out of scope for scope declared objects.
--
/Jacob Carlborg
More information about the Digitalmars-d-announce
mailing list