2015年12月10日 星期四

c++ runtime article content

這是我研究 c++ runtime 時的文章, c++ runtime 是什麼呢? 就是你看到的 c++ 魔法是怎麼做出來的, global object ctor/dtor, static object, exception handle 是怎麼實作的?

程式設計師的自我修養 - 連結、載入、程式庫》並不是只有連結、載入等資訊, 13.3 有如何打造 c/c++ runtime library, 我忘了書上有這樣的內容, 自己查詢網路資料加上一堆反組譯, 得到類似的資料。書上沒有提到 local static object, 我的努力不算白費。

在此做個目錄方便查詢:

侯捷老師的課程, 清華大學 創新育成大樓(近寶山路與高翠路交叉口)
【C++技術講堂】C++ Under the Hood (C++底層揭密)
https://edu.tcfst.org.tw/query_coursedetail.asp?courseidori=07C342-1
* 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

這個課程和我的學習心得很類似。

沒有留言:

張貼留言

使用 google 的 reCAPTCHA 驗證碼, 總算可以輕鬆留言了。

我實在受不了 spam 了, 又不想讓大家的眼睛花掉, 只好放棄匿名留言。這是沒辦法中的辦法了。留言的朋友需要有 google 帳號。