私は自分自身にC++を教え始めており、ガベージコレクターなしでオブジェクトを処理する方法が混乱を引き起こしています。これが私がやろうとしていることの簡単なケースです:
A* a;
B b = new B(a); // Note that B is a derived class of A
a = &b;
while (a != NULL)
{
(*a).run();
}
これはすべて、私が期待するとおりに機能します。私が問題を抱えているのは、Bのrun()メソッド内で、次のようなことをしたいということです。
C c = new C(a); // a is the same pointer as above, that has been stored
// and C another derived class from A
a = &c;
次に、run()を終了します。次に、最初のブロックのwhileループは、新しいオブジェクトに対してrun()を呼び出します。私の質問は、元のbのメモリが正しく割り当て解除されていることを確認するにはどうすればよいですか?