On Tuesday, August 10, 2010 08:09:13 Steven Schveighoffer wrote: > But we should clarify a couple things. First, destructors are *only* > valid for releasing resources not allocated by the GC. For example, in > your Connection object, if you used a phobos object to make the > connection, and allocated that connection via new, then you are *not* > guaranteed that the GC hasn't collected that object already. So it is not > valid in the destructor.
Hmm. I don't recall ever reading that anywhere. I would not have expected anything that was referenced by an object to be garbage collected until the destructor had been called on that object. Granted, the need for destructors on classes is minimal, but that seems like the kind of thing that should be in big red lettering somewhere. You just know that there are going to be plenty of programmers out there who are going to referencing newed data in the destructor. It's a very natural thing to do for cleanup if you have object references as member data. - Jonathan M Davis
