C程式的儲存空間布局

2021-06-09 20:36:58 字數 707 閱讀 7719

下午突然想到了c程式的儲存空間布局,忘了,翻書溫習,記錄如下:

乙個c程式的組成:正文段初始化資料段(資料段)非初始化資料段(bss);下面簡單介紹下這些段:

正文段:由cpu執行的機器指令部分。通常,正文段是可共享的,在儲存器中只需要有乙個副本即可,很多時候,正文段也是唯讀的,防止意外修改;

初始化資料段,又稱資料段,程式中需要明確賦值的變數,即c程式中的有具體賦值的全域性變數;

未初始化的資料段,又稱bbs,即c程式中沒有具體賦值的全域性變數,系統預設賦值0或是null;

,自動變數以及每次函式呼叫時所需儲存的資訊都存放在此段中。每次呼叫函式時,其返回位址以及呼叫者的環境資訊都存放在棧中。然後,最近被呼叫的函式在棧上為其自動和臨時變數分配儲存空間。通過以這種方式使用棧,可以遞迴呼叫c函式。遞迴函式每次呼叫自身時,就使用乙個新的棧幀,因此乙個函式呼叫例項中的變數集不會影響另乙個函式呼叫例項中的變數。

,通常在堆中進行動態儲存分配,即我們在c程式中進行的動態儲存分配,malloc或者calloc,不過記住,動態儲存分配用完要進行釋放,避免空間的洩漏。

c程式儲存空間布局

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

c程式儲存空間布局

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

C程式的儲存空間布局

c程式一直由下面幾部分組成 正文段 這是由cpu執行的機器指令部分。通常,正文段是可共享的,所以即使是頻繁執行的程式在儲存器中也只需乙個副本,另外,正文段常常是唯讀的,以防止程式由於意外而修改其自身的指令。初始化資料段 通常將此段稱為資料段,它包含了程式中需要明確地賦初值的變數。非初始化資料段 通常...