怎么进行c++智能指针unique_ptr的使用
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,怎么进行c++智能指针unique_ptr的使用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1.为什么需要unique_ptr与s
千家信息网最后更新 2026年11月01日怎么进行c++智能指针unique_ptr的使用
怎么进行c++智能指针unique_ptr的使用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
1.为什么需要unique_ptr
与shared_ptr作用类似,需要解决内存泄漏的问题,但是却不需要使用shared_ptr的引用计数,所以为了减少消耗,就需要一个这样的智能指针。但是使用已被废弃的auto_ptr的话就会有新的问题,auto_ptr在使用过程中如果被拷贝构造或者赋值的话,被复制的auto_ptr就失去了作用,这个时候就需要在auto_ptr的基础上禁用拷贝构造以及赋值操作,也就成了unique_ptr。
2.什么是unique_ptr
一个unique_ptr独享它指向的对象。也就是说,同时只有一个unique_ptr指向同一个对象,当这个unique_ptr被销毁时,指向的对象也随即被销毁。使用unique_ptr需要引入
3.unique_ptr特性
unique_ptr禁用了拷贝构造以及赋值操作,也就导致了下面的这些操作无法完成。
void testFunction(std::unique_ptrt){ t->getString();}void features(){ // Disable copy from lvalue. // unique_ptr(const unique_ptr&) = delete; // unique_ptr& operator=(const unique_ptr&) = delete; //不能进行拷贝构造以及赋值运算,也就表示不能作为函数参数传递 std::unique_ptr t(new Test); std::unique_ptr t2 = t; //编译报错 std::unique_ptr t3(t);//编译报错 testFunction(t);//编译报错}
4.如何使用unique_ptr
4.1简单使用
void simpleUse(){ Test *test = new Test; std::unique_ptr t(test); qDebug() << test <<"获取原始指针"<< t.get() <getString(); std::unique_ptr t2 = std::move(t); //交换使用权到t2; t2->getString();} 
4.2指向数组
和shared_ptr需要注意的地方一样,指向数组时要注意模板书写的方式,以及如何使用自定义删除器
错误写法:会导致内存泄露
void customRemover(){ std::unique_ptr t(new Test[5]);} 
正确写法:
void customRemover(){ std::unique_ptr t(new Test[5]); std::unique_ptr p2(new Test[5],[](Test *t){ delete []t; });} 5.unique_ptr需要注意什么
不要多个unique_ptr指向同一个对象
例如:
void repeatPointsTo(){ Test *test = new Test; std::unique_ptr t(test); std::unique_ptr t2(test); //两个unique_ptrzhi'xi指向同一个对象,会导致这个对象被析构两次,导致问题出现} 会导致对象会被多次析构,导致崩溃
关于怎么进行c++智能指针unique_ptr的使用问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。
对象
指向
问题
指针
拷贝
智能
编译
c++
作用
内存
写法
数组
更多
帮助
解答
原始
易行
简单易行
两个
也就是
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网巨头反垄断金融科技
以房互联网科技
嘟嘟瓜互联网科技
丰台科技园 互联网
掌上梦互联网科技
深圳市运趣互联网科技有限公司
欧洲十大科技互联网公司
顶级互联网科技成果有哪些
重庆威客帮互联网科技
贵州叶脉互联网科技有限公司所属行业
互联网校园科技培训
受益于互联网科技的高速发展
成都互联网科技公司工作好不好
互联网公司黑科技创始人
互联网在线教育科技创业
中和天地互联网科技有限公司
众安科技工业互联网合作
互联网科技快讯热点
互联网科技手机排行榜
互联网的科技体现在哪里
蓝思科技飞鸽互联网
未来的互联网科技
互联网金融科技平台
互联网科技有限公司 翻译
欧洲十大科技互联网公司
赶超互联网科技 微信多开
链环科技传统企业怎么转型互联网
电子科技大学互联网创业大赛
神州科技互联网有限公司
珠海东科互联网科技有限公司