智能指针使用中的几个问题

智能指针能不能传出去和智能指针能不能传进来

智能指针对于C++使用者来说,应该是非常友好了,C++的指针特性使得C++可以非常方便的操作内存,但是如果不能很好的使用,他也会给使用者带来一些困扰,比如C++维护的指针能不能传出去呢?我们有时候需要将一个智能指针维护的指针传出去,有时是因为接口无法改变,有时候是因为需要赋值给普通指针,这时候可以想一下,如果指针传出去了,那么谁来维护传出去的指针呢,万一传出去的智能发生了复制怎么办,这时候我们析构智能智能维护的内存时,被复制的指针如果还在使用,就会造成大问题,同样道理,我们也不能将指针直接传给智能指针,不是C++标准不允许,而是跟上面一样,加入我们将指针传给智能指针,那么原始的指针谁来维护呢,如果原始的指针再发生拷贝操作怎么办呢?因此,基于稳定性和安全性,俗称鲁棒性的考虑,我们一般情况下禁止将智能指针维护的指针传入传出,当然也有特殊情况,不过即使发生了特殊情况也要慎之又慎,以防指针维护的内存被智能指针提前释放。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值