C++11 std::shared_ptr指针

std::shared_ptr形如其名,允许多个该智能指针共享地拥有同一堆分配对象的内存指针。
与std::unique_ptr不同的时,为了共享地拥有同一堆分配对象的内存指针,std::shared_ptr内部采用引用计数的方式来实现,所以一旦某一个std::shared_ptr反映针放弃了“所有权”(失效),其它的shared_ptr对对像内存的引用并不会受到影响。

如以下代码:

#include<memory>
using namespace std;

void fun(std::shared_ptr<int> ptr)
{

}

int _tmain(int argc, _TCHAR* argv[])
{
    std::shared_ptr<int> p1(new int(10));
    std::shared_ptr<int> p2 = p1;
    fun(p2);
    return 0;
}

在初始化时,p1引用计数加1 ,p2赋值初再次加1,按“值”传给fun函数时,再次引用加1。

shared_ptr的实现类似于comm接口,当引用计数为0时,才真正的删除内存。

取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

Powered by bytekits.com,汇天下文字,成非凡梦想!!!