知道程式語言的構成,才可以去解析語言(編譯器的工作);
cpu執行的機器指令部分;
通常,正文段可共享---頻繁執行的程式在儲存器中也只需要乙個副本;
通常,正文段是唯讀的---防止程式意外修改其指令;
包含程式中需明確賦初值的變數;
程式開始執行前,核心將此段中的資料初始化為0或空指標;
自動變數(過程結束自動釋放的變數,乙個函式就是乙個過程)以及每次函式呼叫時所需儲存的資訊都存放在此段中;
每次函式呼叫時,其返回位址以及呼叫者的環境資訊(某些機器暫存器的值)都儲存在棧中;
最近被呼叫的函式在棧上為其自動和臨時變數分配儲存空間(棧動態分配---編譯器的工作);
通常,在堆中進行動態儲存分配;
堆位於未初始化資料段與棧之間(歷史形成的慣例);
c程式典型儲存空間的安排
動態儲存方式:
在程式執行期間根據需要進行動態分配儲存空間的方式;
動態儲存變數是在程式執行過程中,使用它時才分配儲存單元,使用完立即釋放;
靜態儲存方式:
在程式編譯時分配固定的儲存空間的方式;
變數(全域性變數、靜態變數)定義時就分頂儲存單元並一直保持不變,知道程式執行結束;
動態記憶體分配(堆):發生自強程式調入和執行時,動態地分配或者**儲存空間的分配記憶體的方法;
靜態記憶體分配:發生在程式編譯和鏈結的時,預先分配儲存空間(棧可以是靜態分配如全域性變數,也可以是動態分配;,棧動態分配是由編譯器進行釋放);
環境高階程式設計
c程式儲存空間布局
摘自 c程式一直由下面幾部分組成 1 棧 由編譯器自動分配釋放管理。區域性變數及每次函式呼叫時返回位址 以及呼叫者的環境資訊 例如某些機器暫存器 都存放在棧中。新被呼叫的函式在棧上為其自動和臨時變數分配儲存空間。通過以這種方式使用棧,c函式可以遞迴 呼叫。遞迴函式每次呼叫自身時,就使用乙個新的棧幀,...
c程式儲存空間布局
摘自 c程式一直由下面幾部分組成 1 棧 由編譯器自動分配釋放管理。區域性變數及每次函式呼叫時返回位址 以及呼叫者的環境資訊 例如某些機器暫存器 都存放在棧中。新被呼叫的函式在棧上為其自動和臨時變數分配儲存空間。通過以這種方式使用棧,c函式可以遞迴 呼叫。遞迴函式每次呼叫自身時,就使用乙個新的棧幀,...
C程式的儲存空間布局
下午突然想到了c程式的儲存空間布局,忘了,翻書溫習,記錄如下 乙個c程式的組成 正文段,初始化資料段 資料段 非初始化資料段 bss 棧,堆 下面簡單介紹下這些段 正文段 由cpu執行的機器指令部分。通常,正文段是可共享的,在儲存器中只需要有乙個副本即可,很多時候,正文段也是唯讀的,防止意外修改 初...