以下のコードでメモリリーク。
struct A { }; struct B : public A { string b; }; A *p = new B; delete p;
原因は B のデストラクタが呼ばれないためで,A に仮想デストラクタを用意することで解決。
以下のコードでメモリリーク。
struct A { }; struct B : public A { string b; }; A *p = new B; delete p;
原因は B のデストラクタが呼ばれないためで,A に仮想デストラクタを用意することで解決。