我已经在unique_ptr
上工作了几天,并且对unique_ptr
的发布方法有疑问。我知道该版本会返回“指向托管对象的指针,如果没有托管对象,则返回nullptr
”。
可以说我们有三个unique_ptr
变量:
unique_ptr< Node > left(Node);
unique_ptr< Node > right(Node);
unique_ptr< Node > middle(Node);
现在,我想更改其中的指针:
middle.release();
right.release();
left.release();
middle.reset(right.get());
right.reset(left.get());
left.reset(middle.get());
这会导致内存泄漏吗?是更好的方法是存储
release()
返回的值然后使用它们,还是这样很好? 最佳答案
你漏了! release
使指针无效。您会丢失原始的对象指针。
只需交换两次即可完成所需的操作:
middle.swap(right);
right.swap(left);
关于c++ - 在unique_ptr C++中的release(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46872819/