On Saturday, 29 August 2015 at 13:43:33 UTC, cym13 wrote:
But that introduce accidentally correct design when the destructor is called by GC, and avoids a leak. This is arguably worse than the initial problem.

I'd like to see a concrete example of this, it seems I'm missing something...


Example 1:

You forget to release Resource A. The GC happen to call A destructor that releases it. But GC destructors are not guaranteed to happen. See http://dlang.org/class.html ("The garbage collector is not guaranteed to run the destructor for all unreferenced objects").


Example 2:

Resource A depends on Resource B. You forget to release either. The GC happens to call A and B destructors in the right order, by chance. A new D release changes this order later.





Reply via email to