课程说明
令高阶C++ programmers更进一步理解C++ 幕后运作机制
课程特色
特别强调 "内核揭密 源码剖析",彻底理解 C++ 之启动与结束之种种背景运作、CRT (C Runtime Library) 扮演的重要角色、及 C++ virtual functions / polymorphism / dynamic binding 的幕后机制。本课程谈的是基础内核知识,对于高阶技术养成及通贯极有帮助。全部内容建立在源码级别 (source code level)。
课程对象
C++ 中高阶学员
课程大纲
Startup Code 是什么?它们出现在哪里?可触摸吗?可修改吗?可利用吗?
C Runtime (CRT) 在 C++ 程序中扮演的重要角色
彻底理解 C++ programs 生前死后的每一个细节
C++ programs 运行前 (before main)和退出后 (after exit) 的所有行为: mainCRTStartup, heapinit, ioinit, environment variables, argc & argv & envp, cinit, core of C Initialization, core of C++ Initialization, main(), secrets of exit.
如何让程序在 main() 之前执行
为什么能够让程序在 main() 之前执行
如何让程序在 exit() 之后执行
为什么能够让程序在 exit() 之后执行
main() 执行前的 CRT 小内存块 (small memory blocks) 分配和释放 (实例观测)
global / static objects 的 ctors & dtors 的特殊性
CRT malloc / free 行为综览和实例观察: cookies, debug headers, 16 headers, 64 groups (free lists), 32 regions, memory management, blocks merging (de-fragment).
Debug Heap 的形成和实例观察
CRT Reporting Functions
virtual functions 能够神奇实现 OCP (Open-Closed Principle) 的原因
virtual functions 背后如何运作 (关于 vptrs 和 vtbls)
何谓动态绑定 (dynamic binding)?编译形式为何?
virtual functions 的两大应用形式:(1) Polymorphism (2) Template Method