C语言内存管理完全实战

📚 共计 30 章节
01
C语言内存管理概述
为什么需要手动管理内存 · 基本概念 · 泄漏/溢出/野指针
入门核心
02
进程地址空间布局
代码段/数据段/BSS段/堆/栈 · 内存布局图
原理OS
03
栈内存详解
栈帧结构 · 分配与释放 · 栈溢出 · 局部变量生命周期
基础
04
堆内存详解
堆分配/释放 · 堆与栈区别 · 碎片化问题
核心
05
malloc函数深度解析
工作原理 · 内存对齐 · malloc(0) · 失败处理
malloc实现
06
calloc和realloc函数
calloc初始化 · realloc扩容策略 · 陷阱
realloc陷阱
07
free函数深度解析
free工作原理 · double free · 悬空指针 · free(NULL)
释放安全
08
内存泄漏检测与防范
泄漏原因 · Valgrind · 代码审查 · RAII思想
ValgrindRAII
09
野指针与悬空指针
产生原因 · 危害 · 防范 · 智能指针思想
指针安全
10
缓冲区溢出
栈/堆溢出原理 · 防范措施 · 安全函数
溢出漏洞
11
内存对齐
对齐原因 · 对齐规则 · pragma pack · offsetof
对齐结构体
12
动态数组的实现
malloc实现动态数组 · 扩容/缩容策略
数据结构实战
13
动态链表的实现
单/双链表内存管理 · 节点创建与销毁
链表指针
14
内存池技术
为什么需要内存池 · 固定大小实现 · 性能对比
内存池优化
15
引用计数与垃圾回收
引用计数原理 · 循环引用 · 标记-清除简介
GC计数
16
C语言中的对象生命周期管理
构造/析构模拟 · RAII · 资源获取即初始化
RAII生命周期
17
const与内存管理
const指针 · 指向const的指针 · 内存管理应用
const限定符
18
volatile与内存管理
volatile作用 · 内存管理关系 · 多线程场景
volatile多线程
19
setjmp与longjmp
异常处理 · 内存管理关系 · 资源清理
异常跳转
20
alloca函数
栈上动态分配 · 使用场景 · 风险与限制
alloca
21
内存映射文件
mmap原理 · 使用场景 · 与malloc对比
mmap文件
22
共享内存
进程间通信 · shmget/shmat · 同步问题
IPC共享
23
内存屏障与原子操作
内存序 · 原子操作 · 无锁数据结构基础
原子屏障
24
C11标准中的内存模型
memory_order · atomic类型 · 线程安全内存管理
C11并发
25
内存调试技术
AddressSanitizer · UBSan · 静态分析工具
调试Sanitizer
26
嵌入式系统中的内存管理
裸机/RTOS · 内存限制 · 栈大小设置
嵌入式RTOS
27
大型项目中的内存管理策略
分层管理 · 模块化 · 内存审计 · 性能优化
架构项目
28
内存分配器实现
简单malloc/free · 伙伴系统 · slab分配器
分配器实现
29
C与C++内存管理对比
new/delete vs malloc/free · RAII · 智能指针
C++对比
30
内存管理最佳实践
编码规范 · 审查清单 · 测试策略 · 陷阱总结
最佳实践总结