C++内存管理与智能指针深度解析

📚 共计 30 章节
01
C++内存模型与对象生命周期
栈、堆、全局/静态存储区、常量区、代码区的布局与特性
内存布局存储区
02
new/delete 运算符深度剖析
operator new/delete 重载、placement new、内存池原理
重载内存池
03
裸指针的困境
内存泄漏、悬空指针、野指针、重复释放、所有权不明确
陷阱调试
04
RAII 思想
资源获取即初始化,栈对象析构自动释放,C++资源管理基石
RAII核心
05
智能指针总览
auto_ptr弃用、unique_ptr、shared_ptr、weak_ptr引入与定位
总览现代C++
06
unique_ptr 详解(上)
独占所有权、移动语义、make_unique、自定义删除器
独占移动语义
07
unique_ptr 详解(下)
函数参数/返回值、容器使用、与原始指针互转
实践转换
08
shared_ptr 详解(上)
共享所有权、引用计数原理、make_shared性能优势
共享引用计数
09
shared_ptr 详解(中)
控制块结构、引用计数线程安全、自定义删除器与别名构造
控制块线程安全
10
shared_ptr 详解(下)
循环引用、enable_shared_from_this、weak_ptr引入
循环引用weak_ptr
11
weak_ptr 详解
弱引用、expired/lock方法、打破循环引用最佳实践
弱引用lock
12
智能指针的性能开销
引用计数原子操作、控制块内存分配、与裸指针对比测试
性能原子操作
13
自定义删除器
函数指针、仿函数、lambda、删除器类型擦除
删除器lambda
14
智能指针与数组
unique_ptr<T[]>、shared_ptr管理数组陷阱、vector对比
数组陷阱
15
智能指针与多态
基类虚析构、隐式类型转换、cast操作
多态虚函数
16
智能指针与异常安全
异常时资源释放、noexcept与智能指针
异常安全noexcept
17
智能指针与多线程
shared_ptr引用计数原子性、数据竞争、线程安全模型
多线程原子性
18
手写一个简易 unique_ptr
模板、移动构造/赋值、-> 和 * 运算符重载
实现模板
19
手写一个简易 shared_ptr
引用计数类、线程安全递增递减、析构逻辑
实现引用计数
20
手写一个简易 weak_ptr
与shared_ptr控制块协作、expired与lock实现
weak_ptr控制块
21
内存对齐
alignof/alignas、结构体对齐、缓存行与伪共享、std::hardware_destructive_interference_size
对齐缓存行
22
内存池设计
固定大小分配器、自由链表、与new/delete性能对比
内存池性能
23
std::allocator
标准库分配器模型、自定义分配器、与智能指针结合
分配器自定义
24
移动语义与完美转发
右值引用、std::move、std::forward、移动构造与智能指针
移动语义完美转发
25
拷贝省略与返回值优化
NRVO、RVO、C++17保证拷贝省略、对智能指针影响
RVO优化
26
内存泄漏检测
Valgrind、AddressSanitizer、CRT调试堆、智能指针泄漏场景
检测ASan
27
智能指针在大型项目中的实践
Pimpl惯用法、工厂模式、观察者模式
设计模式Pimpl
28
智能指针与 C 库交互
自定义删除器调用free、unique_ptr管理FILE*、跨语言边界
C互操作删除器
29
C++17/20/23 内存管理新特性
std::pmr、std::observer_ptr、std::out_ptr、std::inout_ptr
现代C++pmr
30
总结与最佳实践
何时用哪种智能指针、性能敏感场景取舍、代码审查清单
最佳实践清单