記憶體區介紹

2021-09-18 01:46:43 字數 436 閱讀 4432

記憶體主要分為五個區域:

(1) 棧(stack):位於函式內的區域性變數(包括函式實參),由編譯器負責分配釋放,函式結束,棧變數失效。

(2) 堆(heap):這部分是由new申請的記憶體,由delete或者delete負責釋放。

(3) 自由儲存區(free storage):由程式中的malloc、calloc、realloc分配,free釋放,如果未釋放將造成記憶體洩漏,程式結束時由os**。

(4) 全域性區/靜態區(global static area):全域性變數和靜態變數存放區,程式編譯好之後,在程式初始化的時候,全域性變數和靜態變數會被初始化賦值,沒有區分初始化變數和未初始化變數,需要表明一點,全域性靜態變數和區域性靜態變數都是儲存在同乙個靜態區,只是作用域不同。

(5) 常量儲存區:比較特殊的區域,專門用來儲存一些不可修改的常量(一般是指const變數,也有一些常量字串)。

共享記憶體區

一 什麼是共享記憶體區 共享記憶體區是最快的可用ipc形式。它允許多個不相關的程序去訪問同一部分邏輯記憶體。如果需要在兩個執行中的程序之間傳輸資料,共享記憶體將是一種效率極高的解決方案。一旦這樣的記憶體區對映到共享它的程序的位址空間,這些程序間資料的傳輸就不再涉及核心。這樣就可以減少系統呼叫時間,提...

共享記憶體區

共享記憶體區是最快的ipc形式。一旦這樣的記憶體對映到共享它的程序的位址空間,這些程序間資料傳遞不再涉及到核心,換句話說是程序不再通過執行進入核心的系統呼叫來傳遞彼此的資料。mmap 函式 功能 將檔案或者裝置空間對映到共享記憶體區。原型void mmap void addr,size t len,...

幾個記憶體區

1.棧 由編譯器自動分配釋放 2.堆 一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os 3.全域性區 靜態區 全域性變數和靜態變數的儲存是放在一塊的 程式結束釋放 4.文字常量區,存放字串常亮。程式結束釋放 5 程式 區,存放2進製 堆和棧主要的區別有以下幾點 1 管理方式不同 堆...