次のコードでは、ptr
が削除されると、デストラクタ for が呼び出されますが、デストラクタ forBase
は呼び出されませんDerived
(デストラクタBase
が仮想ではないため)。
class Base
{
int b;
};
class Derived : public Base
{
int d;
};
int main(void)
{
Base * ptr = new Derived();
delete ptr;
return 0;
}
Valgrind は、プログラムにメモリ リークが含まれていないと報告しています。私の質問は - の(デフォルトの)デストラクタがDerived
呼び出されない場合、メモリのd
割り当て解除または再利用はいつ、どのように行われるのでしょうか?