DerivedClass1とDerivedClass2がBaseClassから派生したクラスで、BaseClassがポリモーフィックなクラスである場合、これら2つのコードスニペットのどちらが正しいのですか?複数の新しいものと1つの削除
BaseClass *ptr;
ptr = new DerivedClass1;
ptr->PrintName();
ptr = new DerivedClass2;
ptr->PrintName();
delete ptr;
または
BaseClass *ptr;
ptr = new DerivedClass1;
ptr->PrintName();
delete ptr;
ptr = new DerivedClass2;
ptr->PrintName();
delete ptr;
単にPTRの値を再定義する「削除」、またはそれはメモリリークのいくつかの種類を起こすん使用する前に、「新しい」を複数回使用していますか?私はそれが愚かな質問である場合は失礼ですが、私はそれに答えを見つけるように見えなかった。
手動削除が正しくC++を使用していない記号です。それを管理するためにスマートポインタの中にポインタを置くことをお勧めします。 –