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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!