constant初始化:
對於用constexpr 初始化的變數,在編譯時,即初始化這些物件,寫入可執行映像檔案中。
zero初始化:
對於不能constant初始化的變數,進行zero初始化,也是在編譯時刻發生的,但是,不會再可執行映像檔案中佔據任何空間。只有到引導程式的時候,才在記憶體裡分配空間。
動態初始化:
在main函式執行前,執行初始化。對於相同編譯單元的這些變數,初始化順序是固定的;但是,對於不同編譯單元的這些變數,初始化的順序是不確定的。
1,2過程,稱為靜態初始化;3成為動態初始化。
現代編譯器,出於一些效能考慮,可能會將部分動態初始化的部分轉移到靜態初始化;也可能將動態初始化的部分,推遲到第一次遇到這些變數的時候初始化。
關於變數的儲存期,作用域,和鏈結的理解
最近在用c做乙個wifi模組的專案開發,但是對c中變數的應用和工程的體系架構的理解深刻度還不夠,特在這裡對此做乙個總結和框圖化整理。理解有誤處請指正,謝謝。物件 object 從硬體角度來說的,指的是被儲存的每個值所占用的物理記憶體 用儲存期來描述物件,指的是物件在記憶體中保留多長時間。識別符號 i...
C 函式的區域性變數和靜態變數
函式的區域性變數僅當函式被呼叫時才存在,一旦函式被終止,系統就把區域性變數刪除。因此,當下一次呼叫該函式時,不能保留上一次的區域性變數的值。函式每次呼叫時,系統會對區域性變數進行初始化。函式的靜態變數是在區域性變數的資料型別前面加上static 關鍵字。它與區域性變數不同,初始化僅能執行一次。當函式...
變數的儲存方式和生存期
靜態儲存方式和動態儲存方式 靜態儲存方式是指在程式執行期間由系統分配固定的儲存空間的方式。動態儲存方式是在程式運氣期間根據需要進行動態的分配儲存空間的方式。記憶體中供使用者使用的儲存空間分為三個部分 1 程式區 2 靜態儲存區 3 動態儲存區。c的儲存型別包括四種 自動的 auto 靜態的 stat...