shared_ptr的学习

2024-01-01 13:06:40

示例1:?


#include <memory>
class A
{
public:
    A() { cout << "Constructor" << endl; }
    ~A() {cout<<"delete"<<endl;}
};


int main(int argc, char *argv[])
{
    std::shared_ptr<A> p(new A);//1
    std::shared_ptr<A> p2=p;//2
    return 0;
}
//1
//0
//销毁

Constructor

delete

使用shared_ptr,可以免于delete。?

内容摘自:《深入应用C++11 代码优化与工程级应用》

智能指针存储指向动态分配(堆)对象指针的类。

用于生存期控制。

确保在离开指针所在作用域时,自动销毁动态分配的对象,防止内存泄漏。

注意:

    int *ptr=new int;
    shared_ptr<int> p1(ptr);
    shared_ptr<int> p2(ptr);

不可以用一个原始指针初始化多个shared_ptr

use_count()

    shared_ptr<int> p1(new int(10));
    cout<<p1.use_count()<<endl;
    shared_ptr<int> p2=p1;
    cout<<p1.use_count()<<endl;
    shared_ptr<int> p3=p2;
    cout<<p1.use_count()<<endl;

1

2

3

reset

智能指针之shared_ptr初始化,引用计数,常用操作和自定义删除器等等03-CSDN博客

示例1:?

    shared_ptr<int> p1(new int(10));
    shared_ptr<int> p2=p1;
    shared_ptr<int> p3=p2;
    cout<<p1.use_count()<<endl;

    p1.reset();
    cout<<p1.use_count()<<endl;
    cout<<p2.use_count()<<endl;

3

0

2

示例2:?

    shared_ptr<int> p1(new int(10));
    shared_ptr<int> p2=p1;
    shared_ptr<int> p3=p2;
    cout<<p1.use_count()<<endl;

    p1.reset(new int(5));
    cout<<p1.use_count()<<endl;
    cout<<p2.use_count()<<endl;

3

1

2

文章来源:https://blog.csdn.net/weixin_51883798/article/details/135323042
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。