C語言在記憶體中的分布

2021-09-24 12:26:39 字數 546 閱讀 3439

2019獨角獸企業重金招聘python工程師標準》

先認識記憶體中的幾個區,下面的區都在記憶體中,意味著掉電會丟失。但是這不意味著記憶體條裡面真的是這樣,包括作業系統的分頁都只是對記憶體的一種管理方式,或者說是虛擬的邏輯管理。

堆區和棧區屬於動態區域,其他的屬於靜態區域,為什麼這麼說?來看看他們生成的過程:

來看例子加深理解:

int a=0;  //全域性初始化區

char *p1; //全域性未初始化區

const int a = 10; //唯讀區

main()

堆和棧的區別堆區和棧區用的最多,堆區用malloc或new申請,用delete和free釋放;棧區自動分配和釋放。這是第一點區別:申請方式。還有很多其他的區別,先看看系統是怎麼開闢堆和棧的吧:

總結起來:

申請方式

大小不同

棧適合「殺雞」,堆適合「宰牛」。

乙個會棧溢位,乙個會記憶體洩露。

乙個向低位址連續,乙個向高位址不連續。

C 物件在記憶體中的分布

c 通過class的pointers和references來支援多型,這種程式風格就成為 物件導向 一 c 對多型的支援的三種方式 1.把乙個派生類指標隱式轉換成乙個基類指標 ex shape ps new circle 2.經由virtual function機制 ex ps rotate 2.經...

程式在記憶體中的分布

在現代的作業系統中,當我們說到記憶體,往往需要分兩部分來講 物理記憶體和虛擬記憶體。從硬體上講,虛擬空間是cpu內部的定址空間,位於mmu之前,物理空間是匯流排上的定址空間,是經過mmu轉換之後的空間。一般我們所說的程式在記憶體中的分布指的就是程式在虛擬記憶體中的儲存方式。從低位址到高位址,可分為下...

程式在記憶體中的分布

在現代的作業系統中,當我們說到記憶體,往往需要分兩部分來講 物理記憶體和虛擬記憶體。從硬體上講,虛擬空間是cpu內部的定址空間,位於mmu之前,物理空間是匯流排上的定址空間,是經過mmu轉換之後的空間。一般我們所說的程式在記憶體中的分布指的就是程式在虛擬記憶體中的儲存方式。從低位址到高位址,可分為下...