课程说明
从最重要且最普及的内存管理库 (memory management libraries) 中获得启发,并从源码分析中获得实战能力。
课程特点
特别强调 "源码剖析 实例验证",彻底剖析 C/C++ 的各种内存管理策略。全部内容建立在源码级别 (source code level)。了解内存管理的来龙去脉将对操作系统、标准库、应用程序脉脉相承的运行形成一种「胸中自有丘壑」的通贯感。
课程对象
C++ 中高阶学员
课程大纲
万法归宗:C++ Applications => C++ Standard Library (containers & allocators) => CRT (malloc / free) => O.S. (memory APIs)
内存管理诉求:空间效能和速度效能
内存管理之C++语言构件:new/delete, array new/delete, placement new/delete.
两个易混淆的语言构件:new expression vs. operator new
重载 (overloading) 和内存管理相关的语言构件
一个最简化的 Memory Pool
从最简化之Memory Pool进化到std::allocator
std::alloctor 之最佳范例 (GNU版本; 源码剖析和详细图示)
std::alloctor 的优缺点和改善之道
GNU C++ 之近期演变
CRT malloc/free 针对小内存块的管理(源码剖析、详细图标、实例观察)
VC++ 之近期演变
一个更好的小内存块分配器:loki::SmallObjAllocator
Windows APIs如何管理区块
总整理:应用程序 => 使用 std::containers => std::allocator运行 => malloc 运行 => O.S. API 运行