C 程式的記憶體分割槽

2022-02-24 14:53:54 字數 458 閱讀 1029

​ 乙個程式本質上都是由.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 釋放。若程式設計師不釋放,程式結束時由系統釋放。棧 由編譯器自動分配和釋放的,存放函式的引數值 區域性變數的值等。操作方式類似資料結構的棧。...