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

智能指针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;

    http://www.xdnf.cn/news/10540.html

    相关文章:

  1. 【MySQL】第13节|MySQL 中模糊查询的全面总结
  2. Codeforces Round 1028 (Div. 2)(ABC)
  3. JAVA实战开源项目:精简博客系统 (Vue+SpringBoot) 附源码
  4. Python打卡训练营Day42
  5. 阻塞队列BlockingQueue解析
  6. Window系统程序加入白名单
  7. LangChain-结合智谱AI大模型实现自定义tools应用实例
  8. 吴恩达MCP课程(4):connect_server_mcp_chatbot
  9. springboot中@Async做异步操作(Completable异步+ThreadPoolTaskExecutor线程池+@Async注解)
  10. shp转3d tiles在cesium渲染楼宇白膜
  11. Linux 驱动之设备树
  12. Leetcode 2093. 前往目标城市的最小费用
  13. SAR ADC 异步逻辑设计
  14. Linux系统配置屏幕旋转和触摸旋转
  15. 从冷上电到main()函数,Bootloader都做了什么?
  16. 数据类型检测有哪些方式?
  17. robot_lab学习笔记【MDP综述】
  18. QuickJS 如何计算黄金分割率 ?
  19. barker-OFDM模糊函数原理及仿真
  20. Linux防火墙:全面解析IPTables的表、链、规则!
  21. Cypress + TypeScript + Vue3
  22. 数据库管理与高可用-MySQL全量,增量备份与恢复
  23. 劫持进程注入
  24. C语言进阶--程序的编译(预处理动作)+链接
  25. 数据结构:递归(Recursion)
  26. 基于TMC5160堵转检测技术的夹紧力控制系统设计与实现
  27. 输入ifconfig,发现ens33不见了,无法连接至虚拟机
  28. Golang——3、流程控制语句
  29. C++实现伽罗华域生成及四则运算(三)
  30. Python----目标检测(《SSD: Single Shot MultiBox Detector》论文和SSD的原理与网络结构)