C++知识点100问

1问:为什么要引入智能指针?智能指针有哪些,具体实现方式与应用场景是什么?

 答:引入原因:C++开发过程中需要频繁使用堆内存,但易因未释放造成内存泄漏,智能指针可以改善这种问题,在超出其作用域后自动进行释放。


常见的智能指针:std::shared_ptr,std::unique_ptr,和std::weak_ptr,std::auto_ptr(C++ 11已被废弃);


std::shared_ptr:多个指针指向相同的对象,shared_ptr使用引用计数,每一个shared_ptr的拷贝都指向相同的内存,每使用一次,内部引用计数就增加1,每析构一次,内部引用计数就减少1,当引用计数减少到0时,自动删除所指向的堆内存,shared_ptr内部引用计数时线程安全的,但对象的读取需要加锁;


unique_ptr:独享所有权,unique_ptr对象始终关联的时原始指针的唯一所有者,无法复制unique_ptr对象,只能移动


weak_ptr:不具有普通指针的行为,没有重载*和->方法,主要协助shared_ptr使用,观察资源的使用情况,weak_ptr可以从shared_ptr或者weak_ptr对象构造,获取资源的观测权,但weak_ptr没有共享

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

尘海折柳

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值