Destruction of class members when destructor is not called
<p>In the following code, when <code>ptr</code> is deleted, the destructor for <code>Base</code> is called, but not the destructor for <code>Derived</code> (due to destructor of <code>Base</code> not being virtual).</p>

<pre><code>class Base
{
  int b;
};

class Derived : public Base
{
  int d;
};

int main(void)
{
    Base * ptr = new Derived();
    delete ptr;
    return 0;
}
</code></pre>

<p>Valgrind reports that the program contains no memory leaks, which i guess is true in the sense that all newed data is deleted in this particular case. <strong>My question is - given that the (default) destructor of <code>Derived</code> is not called, when and how is the memory for <code>d</code> deallocated or reclaimed?</strong></p>
