01
内存是什么
硬件视角 · 虚拟内存与物理内存 · 进程地址空间 · 为何手动管理
基础硬件
02
栈内存详解
栈帧结构 · 函数调用与返回 · 栈溢出 · 自动生命周期
栈核心
03
堆内存详解
堆与自由存储 · malloc/free底层 · 分配策略 · 内存碎片
堆OS
04
new和delete运算符
new表达式流程 · operator new重载 · placement new · 析构
运算符重载
05
数组动态内存
new[]/delete[] · 数组计数器 · 配对使用 · vector对比
数组陷阱
06
智能指针入门
为什么需要智能指针 · auto_ptr教训 · unique_ptr · 所有权转移
RAII现代
07
shared_ptr深度剖析
引用计数 · 控制块 · make_shared · 循环引用与weak_ptr
shared引用
08
weak_ptr实战
观察者模式 · 缓存场景 · 打破循环 · expired与lock
weak模式
09
自定义删除器
类型擦除 · lambda删除器 · 文件句柄/socket · 类型安全
删除器资源
10
内存对齐
alignof/alignas · 结构体对齐 · 缓存行伪共享 · aligned_storage
对齐性能
11
RAII原则
资源获取即初始化 · 异常安全 · 锁与RAII · 自定义包装器
RAII异常
12
移动语义与内存
左值右值 · 移动构造 · 移动赋值 · 移动后有效状态
移动语义
13
完美转发
引用折叠 · std::forward · 可变参数模板 · 工厂函数
转发模板
14
分配器(Allocator)
std::allocator接口 · 自定义分配器 · 池分配器 · STL容器
分配器STL
15
内存池设计
固定大小分配器 · 自由链表 · 性能对比 · 线程安全
池性能
16
对象池模式
对象复用与重置 · 对象池实现 · 对比new/delete · 应用场景
对象池模式
17
写时复制(COW)
std::string COW历史 · 引用计数 · 线程安全 · 现代替代
COW字符串
18
内存映射文件
mmap原理 · 文件映射与共享内存 · 大文件 · 性能对比
mmap文件
19
栈上分配
alloca · std::array与静态数组 · VLA · 栈上字符串
栈分配
20
内存泄漏检测
Valgrind · AddressSanitizer · 重载new · 工具对比
检测调试
21
悬挂指针与野指针
产生场景 · 智能指针预防 · 静态分析 · 运行时检测
悬挂安全
22
双重释放与use-after-free
常见原因 · sanitizer检测 · 引用计数 · 安全编程
释放漏洞
23
缓冲区溢出
栈溢出攻击 · canary · std::array边界检查 · 安全编码
溢出攻击
24
异常安全与内存
异常中立 · 三guarantees · RAII · 事务性操作
异常安全
25
并发内存管理
线程局部存储 · 无锁数据结构 · 内存序 · 并发分配器
并发无锁
26
垃圾回收机制
C++与GC · 引用计数GC · 追踪式GC · Boehm GC
GC回收
27
内存序与原子操作
memory_order · happens-before · 无锁队列 · 内存屏障
原子内存序
28
性能分析与优化
内存带宽 · 缓存命中率 · 预取指令 · 性能剖析工具
优化分析
29
嵌入式与受限环境
静态分配 · 栈大小控制 · 内存映射寄存器 · RTOS
嵌入式受限
30
大型项目实践
策略选择 · 代码审查清单 · 测试策略 · 反模式总结
项目实战