我正在学习std::unique_ptr
,试图了解它代表什么。
给定一个返回 a 的函数(不受我控制)unique_ptr
,是否暗示/很好理解每次调用都返回unique_ptr
指向新对象的 a (不同于任何先前的调用)?
unique_ptr
举例来说,下面的代码在退出时产生一个双释放,我希望我能正确理解为什么:因此unique_ptr
封装相同内存/对象的两个 s 会导致第二个被破坏时双重释放。因此,以下函数的实现是否会getUniquePtr()
被普遍/隐含地理解为不合理?
// main.cpp
#include <memory>
#include <iostream>
std::unique_ptr<int> getUniquePtr() {
static int* p = new int(42);
return std::unique_ptr<int>(p);
}
class PtrOwner {
public:
std::unique_ptr<int> p_;
};
int main( int argc, char* argv[] ) {
PtrOwner po1;
PtrOwner po2;
po1.p_ = getUniquePtr();
po2.p_ = getUniquePtr();
return 0;
}