// 创建空的智能指针;内部的智能计数器为0,而不是1
std::shared_ptr<int> p1;
std::shared_ptr<int> p2(nullptr);
// 创建的时候,指明其指向
std::shared_ptr<int> p3(new int(10));
std::shared_ptr<int> p4 = std::make_shared<int>(10);
// 调用拷贝构造函数进行赋值
std::shared_ptr<int> p4 = p3; // p4(p3);
p4.reset(); // 将当前智能对象中的引用计数器 - 1;将该对象同时设置为一个空指针
p4.get(); // 获取该智能指针指向的普通指针
weak_ptr
只能和 shared_ptr 相互配合使用;借助 weak_ptr 类型的指针我们可以获取到 shared_ptr 指针的一些状态信息;比如有多少指向相同的 shared_ptr 指针、shared_ptr 指针指向的堆内存是否已经释放。
std::shared_ptr<int> sp1(new int(10));
std::shared_ptr<int> sp2(sp1);
// 创建对应的weak_ptr 数据
std::weak_ptr<int> wp(sp2);
//释放 sp2
sp2.reset();
// 借助 lock() 函数,返回一个和 wp 同指向的 shared_ptr 类型指针,获取其存储的数据
cout << *(wp.lock()) << endl; // 也就是获取 sp1 指针,来获取其内部存储的数据
unique_ptr
不与其他的同类型的指针共享该块内存空间。
引用计数只能为1
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)