On Sat, 15 Jan 2011 23:27:26 -0500, %u <wfunct...@hotmail.com> wrote:

Tracking memory in a modern OS is not easy, and this is probably why no one
wanted to make a statement on what was really happening.

The issue is that the memory *is* leaking -- it's because the struct destructor is simply not getting called. If I call free() manually, the memory usage decreases
normally, so it's not a measurement problem.

Furthermore, this doesn't seem to be an Array(T)-related bug at all -- it seems that pretty much *any* struct with a destructor will not have its destructor called on exit. In fact, after reading the language specifications, it seems like the glossary contradicts itself: it defines Plain Old Data as referring "to a
struct that [...] has no destructor. D structs are POD."

This is definitely a bug.  A struct dtor should be called on scope exit.

That documentation is also out of date. D1 structs had no destructors or constructors, so it's probably just a stale doc.

I find it very hard to believe that struct dtors are never called. There must be some situations where they are called, or the feature would not have made it this far without outcry. The bug referenced by Jonathan is referring to structs not having their dtors called on collection. But that is a completely different problem.

-Steve

Reply via email to