课程简介
Introduction
内存管理作为 C++ 高手必过关卡之一,在 C++ 超强的性能方面起到了重要作用。本课程中侯捷老师带你从最重要且最普及的内存管理库(memory management libraries)中获得启发,并从源码分析中获得实战能力。
·总课时:共20课时
·周末班:每周六、日,上午 10:00-11:50 ,2课时
·具体日期:5 月 20、21、27、28 日, 6 月 3、4、10、11、17、18 日
课程简介
Introduction
内存管理作为 C++ 高手必过关卡之一,在 C++ 超强的性能方面起到了重要作用。本课程中侯捷老师带你从最重要且最普及的内存管理库(memory management libraries)中获得启发,并从源码分析中获得实战能力。
·总课时:共20课时
·周末班:每周六、日,上午 10:00-11:50 ,2课时
·具体日期:5 月 20、21、27、28 日, 6 月 3、4、10、11、17、18 日
培训讲师
Instructor
侯捷
Boolan 首席软件专家
侯捷先生是两岸著名技术教育者,计算机图书作者、译者、书评人。著有《深入浅出MFC》、《多态与虚拟》、《STL源码剖析》、《无责任书评》三卷,译有众多脍炙人口的高阶技术书籍,包括Meyers所著的“Effective C++”系列。侯捷先生还兼任教职于元智大学(台湾)、同济大学(大陆)、南京大学(大陆)。其著作、讲座影响大陆一代程序员。
培训收获
Benefits
了解内存管理的来龙去脉
彻底剖析 C++內存管理策略
理解操作系統、标准库、应用程序的管理通透感
复刻大师级专家技术研磨经验
培训大纲
Syllabus
Part 0:
* 综论 (overview)
* 从高阶到低阶,属性分析
* 从高阶到低阶,调用端之代码实务
Part I : primitives (基本工具)
* new expression vs. operator new
* delete expression vs. operator delete
* new[] expression vs. operator new[]
* delete[] expression vs. operator delete[]
* placement new and placement delete
* bad::alloc, new handler
* 练手:重载 ::operator new 和 ::operator delete
* 练手:详细观察 array new/delete 的内部行为; 理解内存洩漏的可能发生情况。
* 练手:实作 a class with user-defined operator new/delete(亦即实作一个 simple memory pool)
* 练手:改良 simple memory pool 使接近 allocator 形式
Part II : memory tracker (内存追踪器)
* 网络上的一份宝贵资源
* 练手:改装为一个 tiny library
* 策略分析 / 代码分析
Part III : allocator (分配器)
* 认识标准容器默认使用的 std::allocator
* 认识并试用标准库提供的各种 allocators
* 彻底解析 (GNU) 标准库提供的 __pool_alloc:行为与代码
* __pool_alloc 优劣分析
* 练手:修改代码使能观察 __pool_alloc 在极限状态下的求生行为
Part IV : malloc/free — 跨平台 (可移植) 之底线
* 万源归宗 — 为什麽理解 malloc/free 的行为如此重要
* 内存块的结构佈局 — 以 VC++ 为例
* 内存块的结构佈局 — 以 GC++ 为例
* malloc / free 的行为 — 以 VC++ 为例详析:内存块之取得、簿记、切割、分配、归还、收纳管理、合併、额外开销
* malloc / free 的行为 — 以 GC++ 为例浅谈
* 下探 O.S. (操作系统) 内存管理 — 以 Windows XP/2000 为例
VirtualAlloc(MEM_RESERVE), VirtualAlloc(MEM_COMMIT), HeapAlloc()
Part V : Others
* Loki’s SmallObjAllocator,一个特色别具的分配器
* 独特的结构设计、独特的搜寻方式、优于 __pool_alloc 的分析和讨论
* 懒惰为进步之母 — 论 MFC 的两个 macros : DECLARE_POOL_ALLOC / IMPLEMENT_POOL_ALLOC
* C++ 17 之 std::pmr
* C++ 11 之 std::shared_ptr, std::unique_ptr
适用人群
Audiences
基于C++ 进行系统软件开发的软件工程师、高级工程师、软件主管、研发经理、架构师
培训地点
Venue
相关推荐
Recommendation
预约内训
Training