C語言的儲存空間布局

2021-07-31 13:16:31 字數 543 閱讀 4824

cpu執行的機器指令部分,通常,正文段可共享,而且是唯讀的,以防止程式由於意外而修改其自身的指令。

通常將此段稱為資料段,它包含了程式中需要明確賦初值的變數,比如,c語言在函式外的宣告:int max = 100;也就是全域性變數,靜態全域性變數帶初值存放在初始化資料段

通常將此段成為bss段,bss來自早期的彙編運算子,意思是「block started by symbol」(由符號開始的段),在程式開始執行前,核心將此段中的資料初始化為0或者空指標,同樣的,c語言在函式外的宣告比如:long arr[100];使此變數存放在bss段。

注意:程式中還有其他型別的段,比如包含符號的段,包含除錯資訊的段以及包含動態共享庫連線表的段等,這些並不裝載到程序執行的程式映像中

c程式儲存空間布局

摘自 c程式一直由下面幾部分組成 1 棧 由編譯器自動分配釋放管理。區域性變數及每次函式呼叫時返回位址 以及呼叫者的環境資訊 例如某些機器暫存器 都存放在棧中。新被呼叫的函式在棧上為其自動和臨時變數分配儲存空間。通過以這種方式使用棧,c函式可以遞迴 呼叫。遞迴函式每次呼叫自身時,就使用乙個新的棧幀,...

c程式儲存空間布局

摘自 c程式一直由下面幾部分組成 1 棧 由編譯器自動分配釋放管理。區域性變數及每次函式呼叫時返回位址 以及呼叫者的環境資訊 例如某些機器暫存器 都存放在棧中。新被呼叫的函式在棧上為其自動和臨時變數分配儲存空間。通過以這種方式使用棧,c函式可以遞迴 呼叫。遞迴函式每次呼叫自身時,就使用乙個新的棧幀,...

C程式的儲存空間布局

下午突然想到了c程式的儲存空間布局,忘了,翻書溫習,記錄如下 乙個c程式的組成 正文段,初始化資料段 資料段 非初始化資料段 bss 棧,堆 下面簡單介紹下這些段 正文段 由cpu執行的機器指令部分。通常,正文段是可共享的,在儲存器中只需要有乙個副本即可,很多時候,正文段也是唯讀的,防止意外修改 初...