C++14深度探索之C++基础-共享指针与弱指针使用

本文深入探讨了C++14中的共享指针(shared_ptr)和弱指针(weak_ptr)的使用。共享指针用于管理多客户共享的内存,当所有引用解除后自动释放内存,适用于并发场景,但存在潜在的循环引用问题。弱指针则不直接控制资源,需通过lock函数转换为共享指针以访问。文章还展示了如何创建、使用以及交换这两种智能指针的实例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

shared_ptr :

共享指针 管理多个客户使用的内存,多客户都拥有该内存块,

当共享指针不再拥有该内存时,内存会自动释放,

多用于并发领域,当所有访问该内存的线程都退出时,释放该内存

共享指针可被随意复制,与独占指针相反,独占指针不能被复制

在内存与时间上有一定的开销

可能出现的循环引用问题

当两个或多个由 shared_ptr 对象控制的资源保留有相互引用的 shared_ptr 对象时,会发生循环.

示例:

创建并使用共享指针:

//函数返回一个共享指针
shared_ptr<int> funcSharePtr() 
{
    //创建两个共享指针并动态分配内存
    shared_ptr<int> p1{ new int{} };
    shared_ptr<int> p2{ new int{} };
    //创建一个共享指针并复制另一个共享指针地址
    shared_ptr<int> p3 = p2;//指针复制,指针p2,p3指向同一块内存
    co
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

自由软件开发者

有你的鼓励,我会更加努力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值