On Monday, 17 November 2014 at 22:40:36 UTC, Steven Schveighoffer wrote:
On 11/17/14 5:19 PM, Vladimir Panteleev wrote:
On Monday, 17 November 2014 at 16:40:18 UTC, ketmar via
Digitalmars-d-learn wrote:
On Mon, 17 Nov 2014 15:41:25 +0000
Andre via Digitalmars-d-learn <digitalmars-d-learn@puremagic.com> wrote:

   ~this()
   {
       foreach(cp; this._columns)
       {
       }
   }
don't do that in destructors. `_columns` field can be already collected
by GC.

Last I checked, the GC finalizes all dead objects before freeing them.

The GC is not guaranteed to finalize them all before freeing them all.

I would not count on that property -- even if it's currently true. Expect that any GC-allocated memory in your dtor is invalid except for the memory of the object itself.

That's disappointing because it makes destructors considerably less useful. I think that at this point, this will probably become a guarantee for compatibility with existing code.

Reply via email to