尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

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

C++笔记之销毁、释放、转移与unique_ptr的所有权
📅 发布时间:2026/7/6 3:32:58

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)

    • 针对内存:它是系统/内存管理

相关新闻

  • 【光伏】光伏单二极管模型【含Matlab源码 15879期】
  • 2026新大纲普通话考试真题题库50套(PDF电子版)
  • 正则化不是调参玄学:从过拟合本质到工程化干预

最新新闻

  • Winsorized Mean:抗干扰均值计算与实战应用指南
  • Java Web 船舶监造系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】
  • 3个智能方案:彻底告别重复性游戏操作
  • Flatpak打包应用,使用debpak列出依赖树
  • Java Web 产业园区智慧公寓管理系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】
  • OpCore-Simplify:三分钟搞定macOS启动配置的终极方案

日新闻

  • AI智能体安全防护框架AgentGuard:从原理到实战部署指南
  • KMX63与PIC18F26K40硬件组合及低功耗设计实践
  • 基于YOLO13改进的门体检测模型:C3k2模块与PoolingFormer技术解析

周新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号