新闻中心
c++ unique_ptr怎么使用_c++独占智能指针用法说明
std::unique_ptr是C++中独占式智能指针,通过移动语义转移所有权,不可复制,离开作用域自动释放内存,推荐使用std::make_unique创建,支持动态数组管理,有效防止内存泄漏。

在C++中,std::unique_ptr 是一种独占式智能指针,用于自动管理动态分配的对象生命周期。它确保同一时间只有一个 unique_ptr 拥有该对象,当指针离开作用域时,所指向的对象会自动被删除,防止内存泄漏。
基本用法
创建一个 unique_ptr 通常使用 std::make_unique(C++14起支持),这是最安全、推荐的方式:
#include <memory>
#include <iostream>
<p>int main() {
auto ptr = std::make_unique<int>(42);
std::cout << *ptr << "\n"; // 输出: 42</p><pre class='brush:php;toolbar:false;'>return 0;} // ptr 离开作用域,自动释放内存
如果无法使用 C++14,可以用 std::unique_ptr<t>(new T)</t> 构造,但不推荐直接写 new,容易引发异常安全问题。
不能复制,可以移动
unique_ptr 不允许复制构造或赋值,因为它是“独占”的:
auto ptr1 = std::make_unique<int>(10); // auto ptr2 = ptr1; // 错误:不能复制 auto ptr2 = std::move(ptr1); // 正确:转移所有权
执行 std::move 后,ptr1 变为 nullptr,不再拥有对象,ptr2 成为唯一所有者。
Pinokio
Pinokio是一款开源的AI浏览器,可以安装运行各种AI模型和应用
232
查看详情
作为函数参数和返回值
将 unique_ptr 传入函数时,建议使用移动语义或引用:
void process(std::unique_ptr<int> ptr) {
std::cout << "Value: " << *ptr << "\n";
}
<p>auto createPtr() {
return std::make_unique<int>(100);
}</p><p>// 使用示例:
auto p = createPtr(); // 接收返回的 unique_ptr
process(std::move(p)); // 转移所有权给函数</p>如果函数只需读取而不获取所有权,应使用指针或引用接收:void view(int* p) 或 void view(const int& p)。
数组支持
对于动态数组,unique_ptr 也支持,但需指定数组类型:
auto arr = std::make_unique<int[]>(10); // 创建长度为10的数组 arr[0] = 5; // arr[1] = ... 可正常访问
注意:make_unique 对数组只能初始化为未定义值,不能像普通对象那样传递初始值。
基本上就这些。合理使用 unique_ptr 能有效避免手动管理内存带来的风险,提升代码安全性和可维护性。关键点是理解“独占”语义和移动机制。不复杂但容易忽略。
以上就是c++++ unique_ptr怎么使用_c++独占智能指针用法说明的详细内容,更多请关注其它相关文章!
# c++
# ios
# stream
# 作用域
# 游戏开发
# 这是
# 或引用
# ai
# 湖里区网站seo优化
# seo主管怎么样
# 安阳建设网站推广
# 商丘优化网站建设
# 招聘seo怎么做
# 竞价推广网站数据
# 网站推广的四个阶段是
# 奶茶营销推广文献资料
# seo淘宝搜索优化
# 定制网站建设优惠
# 而不
# 它是
# 推荐使用
# 只需
# 可以用
# 是一种
# 边缘
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
提升屏幕阅读器对“m”时间单位的播报准确性:HTML与CSS组合解决方案
极兔快递快件信息查询系统 极兔快递官网运单号追踪
CSS布局中意外空白:解决padding-top导致的顶部间距问题
抖音网页版平台入口 抖音网页版官网在线访问教程
Python:递归比较文件夹内容并找出特定类型文件的差异
在J*a中如何捕获IndexOutOfBoundsException_索引越界异常防护方法说明
Composer的 "check-platform-reqs" 命令有什么用_在部署前检查生产环境是否满足Composer依赖需求
俄罗斯Yandex免登录入口_Yandex搜索引擎官网一键直达
写好的html代码怎么运行出来_运行写好的html代码方法【教程】
C++如何生成随机数_C++ random库使用方法与范围设置
怎样把文件彻底粉碎无法恢复_Windows下安全删除敏感数据【隐私保护】
poki免费入口快捷访问 poki人气小游戏直接玩站点
外媒分析《GTA6》定价:卖100美元可以但真没必要!
c++如何使用std::memory_order控制原子操作顺序_c++ C++11内存模型详解
在J*a中如何开发简易电子商务商品管理系统_商品管理系统项目实战解析
QQ邮箱官方网页版登录 QQ邮箱个人邮箱快速访问
黑鲨3Pro怎样在相册开漫画风滤镜_iPhone黑鲨3Pro相册开漫画风滤镜【趣味滤镜】
12306选座怎么选到商务座_12306商务座选择与配置说明
mysql备份恢复性能优化_mysql备份恢复性能优化方法
怎么去除衣服上的口红印_生活小妙招教你用酒精轻松擦除
谷歌浏览器无痕模式怎么开 Chrome开启无痕浏览设置方法【教程】
如何使用纯J*aScript判断Input元素是否在特定类容器内
漫蛙manwa2最新登录网址_漫蛙manwa2手机网页版入口
葱吃多了会怎样 葱吃多了会伤胃吗
QQ邮箱登录平台入口 QQ邮箱网页版邮箱官方入口
Go语言JSON解析深度指南:动态访问与结构体映射实践
PHP URL参数传递与500错误调试指南
护手霜蹭到袖口上了如何清洗? 怎样避免留下一圈油印?
PowerPoint如何制作滚动字幕结尾彩蛋_PowerPoint路径动画实现平滑滚动字幕效果
深入理解Go语言中Map值与方法接收器的交互:为什么需要临时变量
如何解决电商平台定制报价请求的“黑洞”问题,SprykerQuoteRequest模块助你提升客户体验与销售效率
QQ邮箱官网登录入口 QQ邮箱网页版邮箱快速登录
Mac怎么查看崩溃日志_Mac控制台错误报告分析
uc浏览器网页版入口 uc浏览器网页版最新网址
Win11怎么开启省电模式_Win11电池节电模式自动开启
如何仅使用CSS更改登录界面背景图像图标的颜色
抖音网页版快捷访问 抖音网页版网页版入口操作教程
搜狗浏览器如何使用密码生成器创建强密码 搜狗浏览器内置密码安全工具
ArchiveofOurOwn小说阅读-ArchiveofOurOwn同人作品访问链接
在J*aScript中复现SciPy的B样条拟合与求值:关键考量
yandex入口引擎手机版 yandex安卓版下载入口
J*aScript异步迭代器_j*ascript异步遍历
邮政编码查询不到怎么办_邮政编码查询不到的常见原因与对策
Lar*el表单中优雅地处理“返回”按钮以规避验证:最佳实践指南
J*aScript 字符串标签转换:使用正则表达式高效替换
Win10文件资源管理器“此电脑”分组怎么关 Win10恢复经典视图【技巧】
包子漫画官方网站阅读入口-包子漫画在线漫画官网直达链接
汽车之家官方网站官网入口_汽车之家网页版直接进入
初次安装JDK时环境变量如何正确配置_J*A_HOME与PATH设置规则讲解
MAC如何安全彻底地删除文件_MAC使用终端命令确保文件无法被恢复


2025-10-30
浏览次数:次
返回列表