計算機記憶體分配 管理

2021-09-30 13:31:31 字數 639 閱讀 8398

當我們寫完乙個程式後,編譯、鏈結、執行,表面看似很簡單,其實程式執行過程中,記憶體為我們的程式做了很多事。

我們先來看乙個圖

一般我們將記憶體分為:堆區、棧區、全域性區、**區、常量區,各個區域存放的內容:

棧區:在程式中所建立的區域性變數、引數、陣列、指標等,當程式執行完後,將釋放所占用的該塊記憶體。

堆區:該片區域中存放著我們手工申請的內容,如:malloc、new所建立。

全域性區:全域性變數、靜態變數,在我們程式執行完之後將自動釋放所占用的記憶體。

**區:存放著函式體的二進位制**。

常量區:包含著整形常量、字串常量,該區域內容不能被修改。

int glovar = 0;//全域性初始化區,存放在全域性區

int * glovar2 ;//全域性未初始化區,存放在全域性區

int main(void)

堆和棧的區別

從上述來看,他們所申請的記憶體方式是不一樣的,棧是編譯器自動管理,堆需要我們手工來建立,手工釋放。在程式中,一般通過記憶體的指標來進行釋放。

那他們在記憶體中還具有哪些差別呢?

計算機記憶體管理

在計算機中,儲存區域主要分為 他們的執行速率自下而上加快,與之相應的造價越高。其中,硬碟的執行效率最慢,暫存器的效率最快。在c 中,記憶體主要分為五個區,分別是 區是用來儲存程式的所有 以及字串常量等在編譯期間就能確定的值,在程式的整個生命週期內,在常量資料區的資料都是可用的。在這個區域內,所有的資...

計算機記憶體管理介紹

計算機作業系統記憶體管理是十分重要的,因為其中涉及到很多設計很多演算法。深入理解計算機系統 這本書曾提到過,現在作業系統儲存的設計就是 帶著鐐銬跳舞 造成計算機一種一種容量多,速度快的假象。包括現在很多系統比如資料庫系統的設計和作業系統做法相似。所以在學習作業系統之餘我來介紹並總結一些作業系統的記憶...

計算機記憶體

1.1 計算機硬體記憶體架構。計算機cpu central processing unit 和記憶體的互動是最頻繁的,記憶體是我們的快取記憶體區。使用者磁碟和cpu的互動,而cpu運轉速度越來越快,磁碟遠遠跟不上cpu的讀寫速度,才設計了記憶體,使用者快取使用者io等待導致cpu的等待成本。但是隨著...