一個C程序經過編譯鏈接之後形成可執行文件,可執行文件即由一條條的彙編指令組成,其排布方式如圖1所示。歷史沿襲至今,C程序一直由以下幾部分組成:
正文段:由CPU執行的機器指令組成。通常,正文段是可共享的,在存儲器中也只有一個副本,另外,正文段通常是隻讀的,防止程序由於意外修改其指令。
初始化數據段:通常將此段稱爲數據段,它包含了程序中需要明確賦初值的變量。
未初始化數據段:在程序開始執行之前,內核將此段中的數據初始化爲0或空指針。
棧:自動變量以及每次函數調用時所需保存的信息存放在此段中。每次函數調用時,其返回地址以及調用者的環境信息都存放在棧中。然後,最近被調用的函數在棧上爲其自動和臨時變量分配存儲空間。
堆:通常在堆中進行動態存儲分配。
程序典型的存儲空間安排圖
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
Linux開發免費資源下載
奔跑的码仔
2020-07-08 07:23:31
Linux開發十六_nand驅動
huang20083200056
2020-06-28 00:44:19
Linux開發十九_nfs文件系統
huang20083200056
2020-06-28 00:44:19
Linux開發二十_觸摸屏驅動
huang20083200056
2020-06-28 00:44:19
Linux開發十一_看門狗驅動
huang20083200056
2020-06-28 00:44:19
Linux開發十二_i2c驅動
huang20083200056
2020-06-28 00:44:19
Linux開發十八_網卡驅動
huang20083200056
2020-06-28 00:44:19
Ubuntu下slickedit的安裝與配置
bian1029
2020-06-25 13:25:12
使用SCP從windows向Linux傳文件時出現錯誤
oWuMingXiaoBei1
2020-06-25 05:46:56
移植shellinabox到ARM嵌入式開發板
一 下載源代碼,代碼鏈接 http://shellinabox.googlecode.com/files/shellinabox-2.14.tar.gz
申龙青
2020-06-23 09:07:38
Qt之QStackedWidget和QStackedLayout
light_in_dark
2020-06-23 01:08:58
Linux字符設備驅動開發——簡述按鍵中斷開發流程
multimicro
2020-06-21 23:39:25
嵌入式ARM之基於S5P6818平臺移植Qt5.5、FFTW、QWT--圖文教程
multimicro
2020-06-21 23:39:24