內存四區模型

內存四區模型

                           圖1、內存四區模型
流程說明
1、操作系統把物理硬盤代碼load到內存
2、操作系統把c代碼分成四個區
3、操作系統找到main函數入口執行

1、內存四區:

一個由c/C++編譯的程序佔用的內存分爲以下幾個部分
1、棧區(stack):由編譯器自動分配釋放 ,存放函數的參數值,局部變量的值等。其操作方

式類似於數據結構中的棧。
2、堆區(heap: 一般由程序員分配釋放, 若程序員不釋放,程序結束時可能由OS回   收 。

注意它與數據結構中的堆是兩回事,分配方式倒是類似於鏈表。

3、數據區:主要包括靜態全局區和常量區,如果要站在彙編角度細分的話還可以分爲很多小的區。
           全局區(靜態區)(static):全局變量和靜態變量的存儲是放在一塊的,初始化的全局變

量和靜態變量在一塊區域, 未初始化的全局變量和未初始化的靜態變量在相鄰的另一塊區域。 

程序結束後有系統釋放
常量區 :常量字符串就是放在這裏的。 程序結束後由系統釋放

4、代碼區:存放函數體的二進制代碼。

2、堆棧的生長方向:

  1、堆棧的生長方向和存放數據增長方向不一樣

  

                         圖2、堆棧的生長方向


發佈了28 篇原創文章 · 獲贊 50 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章