GC for noobs
Szymon Gatner
noemail at gmail.com
Thu Feb 27 02:05:05 PST 2014
On Thursday, 27 February 2014 at 09:57:51 UTC, Tobias Pankrath
wrote:
> On Thursday, 27 February 2014 at 09:55:14 UTC, Tobias Pankrath
> wrote:
>> On Thursday, 27 February 2014 at 09:49:08 UTC, Szymon Gatner
>> wrote:
>>> My crashes (still have them and can't track all as debugging
>>> D sucks) are caused by the fact that d-tor of parent object
>>> can be called before child d-tors. Adding destroy() calls in
>>> parent d-tors helped with some of crashes but I really hate
>>> this solution as I was virtually NEVER using 'delete' in C++.
>
> Spec says:
> --
> The garbage collector is not guaranteed to run the destructor
> for all unreferenced objects. Furthermore, the order in which
> the garbage collector calls destructors for unreference objects
> is not specified. 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. <<
> --
Parent-child in the sense of object graph. I did read the spec
when I started to notice crashes. I must say that it really
terrified me to my very bones. I always though that higher-level
memory management environments would give more and not less
guarantees.
Anyway, I really need to learn how to design the code for CG and
undefined d-tor calls. Any pointers would be welcome.
More information about the Digitalmars-d-learn
mailing list