Hi,

I am evaluating D for future projects and coming from C++ I find it really hard to understand semantics of destruction of GC-managed code.

After many application-shutdown crashes caused by invalid order of class destructor calls I really think I need to change the way I am thinking about them (and resource management in general I suppose).

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++.

I feel like I should be doing things in D very differently than I am doing them in C++. I now think I should be using structs everywhere because I understand them but I do need reference semantics (ideally with unique ownership).

Please point me to a literature for C++ programmer that has very little experience with GC/resource management, because at this point I really feel like GC should be easing things and working against me.

Reply via email to