智能指针shread_ptrweak_ptr 和 unique_ptr之一
Posted dzcheng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了智能指针shread_ptrweak_ptr 和 unique_ptr之一相关的知识,希望对你有一定的参考价值。
1、shared_ptr
1、shared_ptr多个指针指向相同的对象。shared_ptr使用引用计数,每个shared_ptr的拷贝
都指向相同的能存。每次使用它一次,该对象内部的引用计数加1,指向该对象的shared_ptr指针
每减少一个,该对象内部的引用计数就减1,当引用计数为0时,就自动的删除该对象所指向的堆内
存(不可手动释放)。
2、shared_ptr的初始化:
1 shared_ptr<int> ptr(new int(2)); 2 auto ptr1(ptr); 3 shared_ptr<int> ptr2 = make_shared<int>(2); //make_shared是标准库的函数 4 //auto ptr3 = make_shared<int>(ptr2); //错误 5 //shared_ptr<int> ptr3 = new int(2); //错误
make_shared用其参数来构造给定类型的对象,如果我们不传递任何参数,对象就会进行初始化。
shared_ptr自动销毁所管理的对象:
当指向一个对象的最后一个shared_ptr被销毁时,shared_ptr类会自动销毁此对象,他是通过另一、
个特殊的成员函数—析构函数完成销毁工作的,类似于构造函数,梅格雷都有一个析构函数。shared_ptr
的析构函数会递减他说指向的对象的引用计数,如果引用计数变为0,shared_ptr的析构函数就会销毁对象,
并释放它所占用的内存。
以上是关于智能指针shread_ptrweak_ptr 和 unique_ptr之一的主要内容,如果未能解决你的问题,请参考以下文章