歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Unix下C程序的內存布局

從<Unix高級環境編程>中總結

按照高位排序:

1.棧,自動變量存儲,每次函數調用的信息如函數結束後返回到的地址,調用者的環境信息.新調用的函數會為其自動臨時變量分配空間.這就是遞歸函數的重點,每一次遞歸函數自我調用,一個新的棧幀會創建,因此他們的數據不會互相干涉到.

2.堆,程序運行時動態分配的數據會被存儲在此.

3.未初始化數據段,通常被稱為"bss"段,包含在程序中未被顯式地初始化的全局變量,在程序被執行前,該段中的數據被內核初始化為數字0或者空指針.

4.已初始化數據段,通常被稱為"data"段,包含在程序中被顯式地初始化的全局變量.

5.文字段,通常被稱為"code"段,CPU可執行的機器指令(二進制代碼),文字段是可共享的,因此對於頻繁使用的程序,在內存中僅需要維護一份.

Copyright © Linux教程網 All Rights Reserved