私は約unique_ptr.release()
を混同しています。unique_ptrのリリースでメモリリークが発生しますか?
私の目標は、基底クラスのunique_ptrを派生クラスのunique_ptr
にキャストすることです。
だから私はこのquestion を発見し、答えは
Derived *tmp = dynamic_cast<Derived*>(basePointer.get());
std::unique_ptr<Derived> derivedPointer;
if(tmp != nullptr)
{
basePointer.release();
derivedPointer.reset(tmp);
}
または
std::unique_ptr<Derived>
derivedPointer(static_cast<Derived*>(basePointer.release()));
ですそれから私はbasePointer.release();
後にベースポインタがどうかと思いました。
これを基にして、questionはメモリリークの原因であると私は理解しています。
私は正しいですか?
したがって、別のunique_ptrにポインタをキャストした場合、それはうまくいくはずですか? – Marc
あなたのコードでは、Benjaminの指示どおりに動作します。 – Useless
ありがとうございます! – Marc