我很困惑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