計算機三大組成部分:cpu、記憶體、硬碟。
程式一旦執行進記憶體成為程序。記憶體給每乙個程序分配虛擬記憶體空間,叫程序虛擬位址空間(4gb),再對映到實際物理記憶體空間。
記憶體劃分為1gb的核心和3gb使用者空間。
其中3gb使用者空間又分為:1、棧空間 2、堆空間 3、全域性資料區 4、**段
1、棧空間:(特點:先進後出,系統管理)
存放區域性變數、函式引數、自動變數。
2、堆空間:(特點:先進先出,使用者管理)
malloc ,calloc ,ralloc
3、全域性資料區:
(1)bss:未初始化的全域性變數;
(2)ordata:常量;
(3)靜態資料區:初始化的全域性變數,static加修飾的變數。
4、**段:
放一些**。
記憶體虛擬位址空間的劃分空間
當我們編碼的時候我們的源程式一般都放在硬碟上,然後當我們使用這個程式時電腦就會在記憶體上執行這個程式,然而電腦記憶體資源是十分緊缺的,一般電腦記憶體都是4g,8g,2g。所以當我們執行程式時並不是直接在記憶體上執行,而是在記憶體產生的虛擬位址空間上先進行,該虛擬空間一般也是4g,8g.這就涉及到了虛...
C 中的記憶體劃分
在c 中,記憶體分成5個區,他們分別是堆 棧 自由儲存區 全域性 靜態儲存區和常量儲存區。棧 就是那些由編譯器在需要的時候分配,在不需要的時候自動清楚的變數的儲存區。裡面的變數通常是區域性變數 函式引數等。堆 就是那些由new分配的記憶體塊,他們的釋放編譯器不去管,由我們的應用程式去控制,一般乙個n...
C 程式中的記憶體劃分
在c 中,記憶體分成5個區,他們分別是堆 棧 自由儲存區 全域性 靜態儲存區和常量儲存區。棧,就是那些由編譯器在需要的時候分配,在不需要的時候自動清楚的變數的儲存區。裡面的變數通常是區域性變數 函式引數等。堆,就是那些由new分配的記憶體塊,他們的釋放編譯器不去管,由我們的應用程式去控制,一般乙個n...