Michel Fortin Wrote: > On 2010-08-10 18:39:03 -0400, "Steven Schveighoffer" > <schvei...@yahoo.com> said: > > > It's only safe if the struct destructor does not deallocate any heap data. > > To be even clearer, it's only safe if the struct destructor doesn't > access any heap data through one of its members. > > And accessing an array or a string could potentially count as accessing > heap data too (unless you can be sure it wasn't from the GC-heap). > > So destructors called during the collection cycle are a very tricky > thing to handle. > > -- > Michel Fortin > michel.for...@michelf.com > http://michelf.com/ >
I agree :) In general, the rule is that destructors can only access value types. This can be enforced at compile time. Also, I was using structs and classes in my examples but this should be understood as value types vs. reference types. For example, when a dtor for a fixed-sized array is called (value type) it will in turn call dtors for its elements