首頁  >  文章  >  後端開發  >  C程式的記憶體佈局

C程式的記憶體佈局

WBOY
WBOY轉載
2023-08-26 22:29:111212瀏覽

C 程式的記憶體佈局如下所示。等級很少。它們是-

  • 堆疊段
  • 堆疊段
  • 文字段
  • 資料段

C程式的記憶體佈局

現在讓我們看看這些部分的功能是什麼。

Sr.No 部分和說明
1 堆疊

進程堆疊包含方法/函數參數、返回位址和局部變數等臨時資料。它是分配給自動變數和函數參數的記憶體區域。它還在執行函數呼叫時儲存返回地址。堆疊採用LIFO(後進先出)機制來儲存局部或自動變數、函數參數以及儲存下一個位址或回傳位址。返回地址是指函數執行完成後要回傳的地址。此段大小會根據局部變數、函數參數和函數呼叫而變化。該段從較高地址增長到較低地址。

2

這是在進程運行時動態分配的記憶體。這是分配給動態記憶體儲存(例如 malloc() 和 calloc() 呼叫)的記憶體區域。該段大小也根據用戶分配而變化。該段從較低地址增長到較高地址。

現在讓我們檢查幾個範例程式的段(資料和 bss 段)大小如何變化。執行指令「size」即可獲知段大小。

3 文字

這包括程式計數器的值和處理器暫存器的內容表示的當前活動。它由 .text 部分錶示。這定義了記憶體中儲存指令代碼的區域。這也是一個固定區域。

4 資料

#本節包含全域變數和靜態變數。它由.data 部分和.bss 表示。 .data 部分用於聲明記憶體區域,其中為程式儲存資料元素。聲明資料元素後,此部分無法擴展,並且在整個程式中保持靜態。

.bss 部分也是靜態記憶體部分,其中包含稍後在程式中聲明的資料的緩衝區。此緩衝區記憶體是零填充的。

資料段可以分成更多的兩部分。

Sr.No 部分和描述 1 初始化資料段

這是目標檔案或程式虛擬位址空間的一部分,由未初始化的靜態變數和全域變數組成。未初始化的資料段也稱為BSS(Block Started by Symbol)段。

2 Un -初始化資料段

這是可讀寫的,因為變數的值可以在運行時更改。該段也有固定的大小。

以上是C程式的記憶體佈局的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除