標籤:區分 虛擬 ring func 類型 line word 使用 log
各位看官們,大家好。上一回中咱們說的是C程式記憶體布局的範例,這一回咱們繼續說該範例。閑話休提,言歸正轉。讓我們一起talk C栗子吧。
看官們,關於C程式記憶體布局的範例,我們在前面的兩個章回都介紹過了,這一回我們將對前面章回中的內容進行總結和提示。
記憶體布局總結
C程式的記憶體布局主要有四個分區:代碼區,資料區(data和bss)。堆區和棧區。能夠使用readelf -S filename查看各個分區的記憶體位址。這四個分區在記憶體中從低地址空間開始依次向高地址延伸。我們再次使用前面章回中的圖直觀地展示給大家,而且對這些分區做一個全面的總結。
總結完分區的內容後。我們結合前面章回中的範例,總結一下範例中各個變數在記憶體中的分布資訊,大家從中能夠看到,範例中各個變數在記憶體中的分布和我們上面總結的內容全然一致。
記憶體分區 分區起始地址 分區中存放的變數和代碼棧區: 0xbfde3000 存放函數和局部變數:la1,la2,i堆區: 0x0964d000 存放動態分配的記憶體空間:p所指向的空間.資料區中的bss區: 0x0804a038 存放程式中未初始化的全域變數和局部靜態變數:ga1,static_la1資料區中data區: 0x0804a028 存放程式中初始化的全域變數和局部靜態變數:ga2,static_la2代碼區: 0x080483e0 存放程式的代碼
記憶體布局細節
除了總結外,我們另一些小的細節須要共用給大家。
希望引起大家的注意:
記憶體布局之外
看官們,俗話說的好,當局者迷。旁觀者清。在大家細緻觀察記憶體中的各個分區時。讓我們跳出這些分區之外,從整個記憶體的角度來做一些說明,希望能把大家就“迷局”中拉出來 。
各位看官。關於C程式記憶體布局的範例咱們就講到這裡。欲知後面還有什麼範例,且聽下回分解 。
一起talk C栗子吧(第一百三十一回:C語言執行個體--C程式記憶體布局三)