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

C++笔记之销毁、释放、转移与unique_ptr的所有权

C++笔记之销毁、释放、转移与unique_ptr的所有权


code review!

文章目录

  • C++笔记之销毁、释放、转移与unique_ptr的所有权
    • 1. C++动态内存管理中销毁和释放的含义
      • 1.1 概念定位不同
      • 1.2 在常用操作中的对应关系
        • 1.2.1 核心操作:`delete` 关键字
        • 1.2.2 显式拆分的情况
      • 1.3 对比总结表
      • 1.4 一个通俗的比喻
    • 2. std::unique_ptr的reset()、release()分别是销毁or释放?
      • 2.1 `release()` —— 既不销毁,也不释放
      • 2.2 `reset()` —— 既销毁,又释放
      • 2.3 总结对比
    • 3. unique_ptr转移堆内存所有权的方法
      • 3.1 使用 `std::move()`(推荐)
      • 3.2 使用 `release()` 配合 `reset()`
      • 3.3 函数参数传递(传值)
      • 3.4 函数返回值(最特殊、最优雅)
        • 3.4.1 为什么不需要写 `std::move`?
      • 3.5 总结:`std::unique_ptr` 所有权转移完整版
    • 4. p=nullptr等价于p.reset()?
      • 4.1 它们之间极其微小的区别
      • 4.2 编码建议
    • 5. 裸指针(Raw Pointer)与 unique_ptr 的转换
      • 5.1 什么是裸指针(Raw Pointer)?
      • 5.2 `std::unique_ptr` 与裸指针的互相转换
        • 5.2.1 裸指针 ➔ `unique_ptr`(获取管理权)
        • 5.2.2 `unique_ptr` ➔ 裸指针(借出或交出管理权)
      • 5.3 核心转换总结表

1. C++动态内存管理中销毁和释放的含义

在C++动态内存管理中,销毁(Destruction)释放(Deallocation/Freeing)是两个经常被一起提及、但底层逻辑完全不同的概念。

简单来说:销毁关注的是"对象生命周期的结束",而释放关注的是"内存空间的归还"。

可以通过以下几个核心维度来彻底搞懂它们的区别。

1.1 概念定位不同

  • 销毁 (Destruction)

    • 针对对象:它是面向对象层面的概念。
    • 核心工作:调用对象的析构函数(Destructor)。用于清理对象内部占用的资源(例如关闭文件句柄、释放对象内部自己new出来的其他内存、断开网络连接等)。
    • 结果:此时对象的生命周期正式结束,对象不再合法存在,但它曾经占用的那块内存空间还没有交还给操作系统。
  • 释放 (Deallocation)

    • 针对内存:它是系统/内存管理
http://www.jsqmd.com/news/1132252/

相关文章:

  • 【光伏】光伏单二极管模型【含Matlab源码 15879期】
  • 2026新大纲普通话考试真题题库50套(PDF电子版)
  • LeetCode第三方解绑定 微信一个账号,手机号一个账号
  • 第19章|有章可循:Rules 规则系统深度剖析
  • Rust AI CLI 提示词模板:先把变量边界定义清楚
  • 正则化不是调参玄学:从过拟合本质到工程化干预
  • MiniMax M3重新定义AI公司价值:从模型能力到工作流,引领行业竞争新方向
  • QT qml写了一个学生管理系统
  • YOLOv10模型改进-Backbone改进-第64篇:YOLOv10改进策略【Backbone】| GhostNet Backbone替换
  • 特征向量与特征值:数据科学中的结构解剖刀
  • AI编程时代程序员生存指南:从工具实操到能力重塑
  • Python 3 网络编程详解:从原理到实战
  • 连锁超市收银系统选什么?千店实测与商拓深度测评
  • 基于EtherCAT总线的机器人控制系统开发
  • AI Agent平台选型实战:从LangChain到CrewAI的10大开源方案深度测评
  • 相机拓扑全局关联建模 CameraGraph 实现视频孪生全域目标无缝接力追踪 增量轻量化三维网格重建 NeuroRebuild 适配边缘端视频孪生部署方案
  • 新手也能上手!2026年公认好用的专业AI论文软件
  • 终极指南:一键修复Windows软件运行失败的Visual C++运行库问题
  • 直方图靠右曝光
  • Python爬虫经典案例第70篇:金融平台爬取:股票数据采集实战
  • 数据库技术设计(第六单元)
  • 实验七:自媒体运营分析-数据清洗与预处理
  • 涩谷是全球最繁忙的十字路口
  • RAG + Prompt Engineering + 向量数据库:AI 应用开发三件套
  • NSK UPFC 2040-1 极速精密滚珠丝杠详述
  • 项目版本管理的最佳实践:云效飞流Flow篇
  • 2026 年选购好口碑梳子攻略:探秘宣城泾县非遗木梳传统工艺
  • XSS-Labs通关秘籍:7种花式绕过技巧与实战解析
  • 要不要弃坑 Cursor?一个重度用户的真实纠结
  • 2026实测|Cursor、Claude Code、DeepSeek-TUI到底哪个好用?