我很困惑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
是的,在你的代碼中,它的行爲與本傑明的表現完全一樣 - 我只是去尋求一般的答案而不是具體的。 – Useless
非常感謝! – Marc