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

被折叠的 条评论
为什么被折叠?



