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)针对内存:它是系统/内存管理