智能指针中的reset和release
原创
©著作权归作者所有:来自51CTO博客作者玫瑰花店的原创作品,请联系作者获取转载授权,否则将追究法律责任
测试代码
#include <iostream>
#include <memory>
using namespace std;
class test
{
public:
test()
{
}
~test()
{
cout << "over" << endl;
}
public:
string name;
int age;
};
int main()
{
shared_ptr<test> a = make_shared<test>();
a->name = "haha";
a->age = 18;
test *jk = new test();
jk->name = "jkjk";
jk->age = 19;
a.reset(jk); //jk不需要去delete,智能指针会管控它
cout << a->name << " " << a->age << endl;
unique_ptr<test> plpl(new test());
plpl->name = "pmpm";
plpl->age = 21;
auto p = plpl.release();//需要手动delete否则会造成内存泄露
cout<<p->name<<" "<<p->age<<endl;
delete p;
p=nullptr;
return 0;
}
运行结果
over
jkjk 19
pmpm 21
over
over