《程式設計師的自我修養》筆記九 執行庫

2021-09-20 03:35:54 字數 445 閱讀 7881

main 不是程式開始的第一行**

作業系統裝載程式之後,首先執行的不是 main 的第一行,而是某些別的**,這些**負責準備好 main 函式執行所需要的環境,負責呼叫 main 函式,在 main 返回後,記錄其返回值,呼叫 atexit 註冊的函式,結束程序。

在 main 之前執行的**被稱為入口函式或入口點,不同平台有不同的名字,入口點是乙個程式的初始化和結束部分,常是執行庫的一部分。

c 執行庫(crt),使程式能夠正常執行的**,包括入口函式,依賴的函式,以及標準庫函式的實現。執行庫是平台相關的,與作業系統結合的非常緊密。glibc 與 msvc crt分別是 linux 和 windows 下的 crt.

crt 包括的功能

早起的 crt 不支援多執行緒

改進方法

程式設計師的自我修養 執行庫

atexit 函式註冊乙個main結束時執行的函式。大致如下 1.作業系統在建立程序後,把控制權交給程式的入口 2.入口函式對執行庫和程式執行環境進行初始化,包括堆 io 執行緒 全域性變數構造等。3.入口函式在完成初始化之後呼叫main函式,開始執行程式主體部分。4.main函式執行完畢之後,返回...

程式設計師的自我修養(十四) 入口函式和執行庫

入口函式和程式初始化 入口函式 入口點 程式的入口點實際上是乙個程式的初始化和結束部分,它往往是執行庫的一部分。乙個典型的程式執行步驟大概如下 glibc入口函式 msvc crt 入口函式 預設入口函式名為 maincrtstartup。它的大概流程是 初始化和os版本有關的全域性變數 初始化堆 ...

《程式設計師的自我修養》筆記

以下是我讀此書時作的一些筆記,當然書中還有很多值得參考的想法,就不一一枚舉了。一萬小時說法 這個說法很普遍了,它再次提醒了我如何去做乙個領域的專家。如果平均每天八小時在這個領域上,那麼一年300天 300 8 2400,保持這種學習激情在上面,五年內就可以成為專家了,我算了算自己在這個領域投入的時間...