C++智能指针

博客介绍了C++中的智能指针,包括唯一智能指针和共享智能指针。唯一智能指针初始化后无法指向其他内存地址,reset()会释放空间并置0,release()不释放空间只置0。它能防止重复释放和悬挂指针问题,且会自动释放。还提及了共享智能指针及相关注意事项。

一、唯一智能指针std::unique_ptr<int>intptr{new int{5}}

1、唯一指针,intptr初始化后就无法指向其他内存地址


2、注意区别

std::make_unique<int>(150)中的150是初始化的值

std::make_unique<int[]>(10)中的10是int数组的个数


3、reset()会进行两步操作,先释放空间,然后将指针置0


4、上面的代码中如果智能指针intptr是数组的形式,那么它就不能像普通指针那样通过*intptr来访问(智能指针使用起来有限制),但是可以通过get()将智能指针返回给一个普通指针,让它可以通过普通指针的方式来使用


5、release()不会释放空间,只是将指针置0,并且返回指向的内存空间的地址


6、唯一智能指针可以有效防止重复释放和悬挂指针的问题

7、智能指针不需要自己释放,会自动释放


二、共享智能指针

注:unique()方法在c++17中已经不支持,c++14中可以使用

weakptr智能指针

autoptr智能指针

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值