乙個程式本質上都是由.bss
段、.data
段、.text
段三個組成的。.data
段包含三個部分:heap(堆)、stack(棧)和靜態資料區。.text
段存放**區。.bss
裡面裝載了未被初始化的資料;如圖:
示例如下:
int a = 0; //全域性初始化區(靜態區)
char *p1; //全域性未初始化區 (bss段)
int main()
可以聯合之前所寫的關於鏈結的一些總結,引用那張圖如下:
![多個可重定位物件檔案合併成可執行檔案的過程](
C 程式記憶體分割槽通俗理解
知識點 1 棧區 stack 由編譯器自動分配釋放,存放函式的引數值,區域性變數值等。2 堆區 heap 一般由程式設計師分配釋放,隨叫隨到,揮之即走。3 全域性 靜態區 global static 全域性變數和靜態變數的儲存是放在一起的,在程式編譯時分配。4 文字常量區 存放常量字串。常量不能修改...
c語言語法 c程式的記憶體分割槽
區 text段 資料區 靜態全域性區 bss data 常量區 rodata 堆區 heap 棧區 stack 存放程式二進位制 編譯時已經確定,通常為唯讀儲存區 資料區分為靜態全域性區和常量區 靜態 全域性 區儲存全域性變數和靜態變數,靜態區又可分為 常量區 rodata段 儲存const修飾的全...
c 記憶體分割槽
堆 由程式設計師手動分配和釋放,完全不同於資料結構中的堆,分配方式類似鍊錶。由malloc c語言 或new c 來分配,free c語言 和delete c 釋放。若程式設計師不釋放,程式結束時由系統釋放。棧 由編譯器自動分配和釋放的,存放函式的引數值 區域性變數的值等。操作方式類似資料結構的棧。...