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