std::shared_ptr

C++11提供了三种智能指针:std::shared_ptr, std::unique_ptr, std::weak_ptr,使用时需添加头文件<memory>。

shared_ptr使用引用计数,每一个shared_ptr的拷贝都指向相同的内存。

每使用他一次,内部的引用计数加1,每析构一次,内部的引用计数减1,减为0时,删除所指向的堆内存。

shared_ptr内部的引用计数是安全的,但是对象的读取需要加锁。

注意,不能将一个原始指针直接赋值给一个智能指针。

不要用一个原始指针初始化多个shared_ptr,原因在于,会造成二次销毁。

构造

1 1、通过构造函数
2 std::shared_ptr<T> p1(new T(1));
3 2、std::make_shared<T>辅助函数
4 std::shared_ptr<T> p2 = std::make_shared<T>(2);
5 3、reset方法来初始化shared_ptr
6 p1.reset(new T(3));
View Code

  析构

1 p1.reset();
View Code

猜你喜欢

转载自www.cnblogs.com/osbreak/p/9208754.html