次のコードでは、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割り当て解除または再利用はいつ、どのように行われるのでしょうか?