C++智能指针详解
创建智能指针
第一种方法通过shared_ptr定义智能指针, 需要分配两次内存, 首先new T()
为对象T申请内存, 其次为shared_ptr申请内存, 依次存放指向T的指针和连接数.
shared_ptr<T> p1(new T() );
shared_ptr<T> p2 = p1;
第二种方法使用make_shared创建智能指针, 只需要一次内存申请, 同时存放T对象和强连接数-弱连接数等控制块信息:
shared_ptr<T> p1 = make_shared<T>();
shared_ptr<T> p2 = p1;
第二种方法只需要分配一次内存, 且内存占用小于第一次分配, 性能较高.
智能指针对象操作函数
reset()
智能指针引用计数-1, 如果引用计数减小到0, 则析构指向对象.
对于上面定义的智能指针p1,p2;
p1.reset(); //引用计数-1
p2