1.棧 - 由編譯器自動分配釋放
2.堆 - 一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os**
3.全域性區(靜態區),全域性變數和靜態變數的儲存是放在一塊的 - 程式結束釋放
4.文字常量區, 存放字串常亮。- 程式結束釋放
5 程式**區,存放2進製**。
堆和棧主要的區別有以下幾點:
1、管理方式不同: 堆記憶體有程式設計師管理,容易產生記憶體洩露 棧記憶體有編譯器系統自動管理分配和釋放,
2、空間大小不同: 堆記憶體基本上沒限制,棧記憶體有編譯器管理,會有限制
3、能否產生碎片不同: 堆記憶體會產生記憶體碎片, 棧記憶體是鏈式儲存,不會產生碎片
4、生長方向不同;堆記憶體,生長方向是向上的,就是向著記憶體位址增加的方向;棧記憶體,生長方向是向下的,是向著記憶體位址減小的方向增長。
5、分配方式不同: 堆都是動態分配的,沒有靜態分配的堆。棧有2種分配方式:靜態分配和動態分配。
6、分配效率不同: 堆記憶體的分配效率沒有棧記憶體高
共享記憶體區
一 什麼是共享記憶體區 共享記憶體區是最快的可用ipc形式。它允許多個不相關的程序去訪問同一部分邏輯記憶體。如果需要在兩個執行中的程序之間傳輸資料,共享記憶體將是一種效率極高的解決方案。一旦這樣的記憶體區對映到共享它的程序的位址空間,這些程序間資料的傳輸就不再涉及核心。這樣就可以減少系統呼叫時間,提...
共享記憶體區
共享記憶體區是最快的ipc形式。一旦這樣的記憶體對映到共享它的程序的位址空間,這些程序間資料傳遞不再涉及到核心,換句話說是程序不再通過執行進入核心的系統呼叫來傳遞彼此的資料。mmap 函式 功能 將檔案或者裝置空間對映到共享記憶體區。原型void mmap void addr,size t len,...
記憶體區介紹
記憶體主要分為五個區域 1 棧 stack 位於函式內的區域性變數 包括函式實參 由編譯器負責分配釋放,函式結束,棧變數失效。2 堆 heap 這部分是由new申請的記憶體,由delete或者delete負責釋放。3 自由儲存區 free storage 由程式中的malloc calloc rea...