私は自分std::vector
のunique_ptr
s のためにこれを行ってきました:
m_stuff.push_back(std::unique_ptr<Thing> (new DerivedThing()));
これにより、ベクター内の要素が削除されたときにメモリが自動的に削除されます。
別のシナリオがあり、他の何かが経由してヒープメモリを作成するnew
ため、ジェネリックポインターが既に存在します。さて、私がこれをするとします:
m_stuff.push_back(std::unique_ptr<Thing> (thingy));
//thingy is Thing*
これを行うとすぐに、ベクトルがベクトルから削除されたときにdになるように、ベクトルm_stuff
が制御できるようになったと安全に想定できますか? もちろん、他の場所にコピーまたは保存された場合、ポインターがぶら下がっている可能性がありますが、それは別の問題です。thingy
delete
thingy