C語言程序的段

C語言在編譯和連接後,將生成代碼段(Text)、只讀數據段(ROData)和讀寫數據段(RWData)。在運行時,除了以上三個區域外,還包括未初始化數據段(BSS)區域和堆(Heap)區域和棧(Stack)區域。

C語言程序的段

  1、代碼段(code或text)

代碼段由各個函數產生,函數的每一個語句將最終經過編繹和彙編生成二進制機器代碼(具體生生哪種體系結構的機器代碼由編譯器決定)。

  2、只讀數據段(ROData)

只讀數據段由程序中所使用的數據產生,該部分數據的'特點是在運行中不需要改變,因此編譯器會將該數據段放入只讀的部分中。C語言中的只讀全局變量,只讀局部變量,程序中使用的常量等會在編譯時被放入到只讀數據區。

注意:定義全局變量constchara[100]={"ABCDEFG"};將生成大小爲100個字節的只讀數據區,並使用“ABCDEFG”初始化。如果定義爲:constchara[]={"ABCDEFG"};則根據字符串長度生成8個字節的只讀數據段(還有’