当前位置: 首页 > news >正文

智能指针unique

  1. 什么是智能指针:
  • 就像是一个自动管家
  • 帮你管理内存
  • 自动清理不需要的内存
  • 防止内存泄漏
  1. unique_ptr 的特点:
  • 独占所有权:一个资源只能被一个 unique_ptr 管理
  • 不能复制:只能移动
  • 自动释放:当 unique_ptr 被销毁时,自动释放内存
    // 传统方式(可能出问题)
    void bad_example() {int* p = new int(10);  // 分配内存// 如果这里发生异常,内存就泄漏了delete p;  // 释放内存
    }// 使用智能指针(安全)
    void good_example() {std::unique_ptr<int> p = std::make_unique<int>(10);// 不需要手动删除,会自动清理
    }

    只能移动,不能复制:

    // 创建两个智能指针
    std::unique_ptr<int> p1 = std::make_unique<int>(10);
    std::unique_ptr<int> p2;// 移动所有权
    p2 = std::move(p1);  // p1 变为空,p2 获得所有权// 错误示例
    p2 = p1;  // 错误!不能复制
    // 1. 创建对象
    auto p = std::make_unique<MyClass>();// 2. 作为函数参数
    void process(std::unique_ptr<MyClass> p) {// 使用 p
    }// 3. 作为返回值
    std::unique_ptr<MyClass> create() {return std::make_unique<MyClass>();
    }// 4. 在容器中使用
    std::vector<std::unique_ptr<MyClass>> objects;

    相关文章:

  1. Launcher3体系化之路
  2. day16 leetcode-hot100-30(链表9)
  3. 开源版 PyMOL 如何绘制 新冠病毒 分子结构?
  4. NX811NX816美光颗粒固态NX840NX845
  5. Debian上安装PostgreSQL的故障和排除
  6. 1Remote远程会话管理以及一键启动虚拟机
  7. 攻防 FART 脱壳:特征检测识别 + 对抗绕过全解析
  8. 终结电源反接与压降损耗:理想二极管控制器深度解析
  9. 前端基础学习html+css+js
  10. ​​技术深度解析:《鸿蒙5.0+:全场景能效的产业革命》​
  11. 第二章 机器学习基本概念
  12. Vue组件定义
  13. 爱其实很简单
  14. AtCoder Beginner Contest 399题目翻译
  15. 看问题的本质背后是什么?
  16. 《操作系统真相还原》——进入内核
  17. 自编码器Auto-encoder(李宏毅)
  18. Git深入解析功能逻辑与核心业务场景流程
  19. 【Redis】数据类型补充
  20. [GESP202412 五级] 奇妙数字
  21. 做网站贷款/班级优化大师的优点
  22. 惠州网站建设方案报价/免费站推广网站在线
  23. 下载 做网站的原型文件/登录注册入口
  24. 网站建设与栏目设置/杭州做百度推广的公司
  25. 银川疫情最新消息/windows11优化大师
  26. 电子商务网站模版/成都seo网络优化公司