天天看點

C程式的存儲空間布局

C程式存儲空間布局一般由以下幾部分組成:

正文段:有CPU執行的機器指令構成。通常,正文段是共享的,是以同時啟動一個程式的多個程序,在記憶體中隻有一個正文段的副本。正文段是隻讀的防止程式意外修改。

初始化資料段:常稱為資料段,有程式裡初始化過的靜态變量構成,如:

該變量初始化賦初值為123存放在初始化資料段。

非初始化資料段: BSS段,存儲未初始化全局變量,靜态變量的一塊記憶體。例如聲明全局數組 int a[100], 不會将100個0記錄在可執行檔案鏡像中,而隻是記錄了辨別符a和其所占用的記憶體大小

棧:自動變量,函數調用都在棧上。函數裡儲存的資訊(形參,變量,傳回位址)都在此段上,會自動開辟空間,并且函數執行完畢後自動釋放。

執行流執行到函數調用時配置設定記憶體, 高位址是棧底, 向低位址方向增長

堆:通常在堆上動态存儲配置設定,由人為開辟空間,人為釋放空間。

C程式的存儲空間布局

繼續閱讀