目录
- 1、什么是shared_ptr?
- 2、shared_ptr支持哪些操作?
- 3、如何创建shared_ptr的实例?
- 4、什么是shared_ptr的引用计数?如何查看?
- 5、shared_ptr何时释放其所指向的对象?

1、什么是shared_ptr?
C++11中包括shared_ptr在内的多种指针,都是模板类型,意味着使用者可以指定想要操作的类型。
创建shared_ptr的方式如下:
shared_ptr<int>p1; // p1=NULL
2、shared_ptr支持哪些操作?
- 创建:
shared_ptr p = make_shared; - 判断是否为
NULL:if(p) - 获取指向对象
- 等等
3、如何创建shared_ptr的实例?
通过C++的标准库中make_shared()函数动态的申请对象内存,并返回此对象的shared_ptr:
shared_ptr<int>p1; p1 = make_shared<int>(666);
4、什么是shared_ptr的引用计数?如何查看?
由于允许多个shared_ptr指向同一个对象,所以C++支持“引用计数”,也就是统计同一对象被多少个shared_ptr所指向。当某对象的shared_ptr增加时,引用计数随之加一;当某对象的shared_ptr减少时,引用计数随之减一。
shared_ptr对象的use_count的函数成员返回引用计数值:
shared_ptr<int>p2, p3; p2 = p1; p3 = p1; // p1,p2,p3指向同一对象,所以引用技术值为3 cout << p2.use_count() << endl;
5、shared_ptr何时释放其所指向的对象?
当同一对象的引用计数变为0时,此对象所占空间就会被释放,
比如函数调用结束时:
class SP {
public:
~SP() { cout << "Destroy SP" << endl; }
};
void auto_destroy() {
// 创建SP类型的共享智能指针
shared_ptr<SP>p1 = make_shared<SP>();
}
当调用auto_destroy()函数结束时,不需要手动的释放shared_ptr所指向的内存空间,系统会自动的销毁SP对象。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

评论(0)