release
返回一个指向被管理对象的指针,并释放所有权, 死之前把权利交出来void * a = b.release()
没有释放(release)内存,只是b变成了nullptr
swap 易子而食
reset 鸠占雀穴
unique_ptr 一夫一妻制
move 移动语义, 两个指针不能直接赋值,只能加这句话a = move(b),内部有a原来指向的内存释放的发生
make_unique<A>();
unique_ptr<A>(new A)
#include <iostream>
#include <memory>
#include <vector>
using namespace std;
class A {
};
vector<unique_ptr<A>> fun() {
vector<unique_ptr<A>> res;
for (int i = 0; i < 4; i++) {
auto ptr_tmp = make_unique<A>();
res.push_back(move(ptr_tmp));
}
return res;
}
int main() {
auto res = fun();
std::cout << "Hello, World!" << std::endl;
return 0;
}
https://www.cnblogs.com/wuyepeng/p/9741241.html
函数到底发生了什么return之后,应该是直接用的是一个了