On Saturday, 14 February 2026 at 18:42:21 UTC, H. S. Teoh wrote:
When entering a class destructor, are any of the dynamically allocated class members safe to read?

No. The order in which the GC deallocates objects is not defined, and when the dtor is run, any references to GC-allocated objects cannot be safely read, as those objects may have already been destroyed.

Does this deviate from the way C++ handles destruction?

https://stackoverflow.com/questions/20045904/c-can-i-use-this-safely-in-a-destructor

Quote:

"    Can I use this in a destructor

Yes.

For example, I know I'm not supposed to do anything with base classes, since they are gone.

No, the base classes are still intact at this point. Members (and perhaps other base classes) of derived classes have already been destroyed, but members and base classes of this class remain until after the destructor has finished."

I thought that also in D all the members and the base objects of the object which is destructed are still valid and accessible until the destructor finished.

Reply via email to