Memory Management in C++内存管理培训
课程介绍:
本课程特別强调 "源碼剖析,实例验证",使学员徹底理解 C/C++ 程式的各种內存管理策略。
本課程剖析市面上最重要最普及的若干內存管理庫的行為和源碼。
令对內存管理有兴趣或有任务的程序员能够从最重要最普及的內存管理库中获得启发,並从源码分析中获得实战能力。
从最重要且最普及的內存管理库 (memory management libraries) 中获得启发,並從源碼分析中获得实战能力。
课程特色:
特別強調 "源碼剖析 實例驗證",徹底剖析 C/C++ 的各種內存管理策略。全部內容建立在源碼級別 (source code level)。了解內存管理的來龍去脈將對操作系統、標準庫、應用程序脈脈相承的運行形成一種「胸中自有丘壑」的通貫感。
课程对象:C++中高级学员
课程时长:2天
课程大纲:
* 內存管理訴求:空間效能 和 速度效能
* 內存管理之 C++ 語言構件:new/delete, array new/delete, placement new/delete.
* 兩個易混淆的語言構件:new expression vs. operator new
* 重載 (overloading) 上述語言構件
* 一個最簡化的 Memory Pool
Cookies, Free Lists, Embedded Pointers, operator new(), operator delete()
* 從最簡化之 Memory Pool 進化到 C++ 標準庫之 std::allocator
> 為什麼不該直接使用 std::allocator
> std::allocator 和 std::containers 的關係
* std::alloctor 之最佳範例 (GNU 版本, 源碼剖析和詳細圖示)
* std::alloctor 之優缺點和改善之道
* GNU C++ 之最新 (lastest) 演變
* CRT malloc/free 針對小區塊之繁複管理 (源碼剖析、詳細圖示、實例觀察)
cookies, SBH (Small Blocks Heap), debug headers, 16 headers, 64 groups (free lists), 32 regions, memory management, blocks merging (de-fragment).
* VC++ 之最新 (lastest) 演變
* 一個更好的小區塊分配器
loki library, Chunks, SmallObjAllocator, 以 index 模擬 ptr, 以 array 模擬 list, 看似早怪其實精巧的算法
* Windows APIs如何管理區塊
* 總整理:應用程序 => 使用 std::containers => std::allocator起而運作 => malloc 起而運作 => O.S. API 起而運作