記憶體管理以及分配

2021-06-22 16:23:44 字數 660 閱讀 4039

前面有型別的  叫定義

前面無型別的  叫使用

alloc 開闢空間,並且把空間清零

init  初始化   為0

一.棧區:

//凡是

在函式體內 和 方法體內 定義 的變數

都儲存在棧區

(包括形參

)//棧的特點是

,先進後出

.先定義的變數

,先入棧

,後定義的變數後入棧

.//呼叫函式時

,函式中的變數會陸續入棧

,函式呼叫結束時

,變數陸續出棧

//棧區記憶體的分配與**

由系統自動**

二.堆區:

有使用者(程式設計師)分配和**,如果使用者沒有**記憶體,那麼,記憶體就會越用越少,有可能導致記憶體不夠用,程式崩潰,如果沒有達到不夠用,沒事.當程式退出時,堆記憶體系統由系統**.

三.全域性區(靜態區):

//定義在函式外面的變數

稱為全域性變數

,全域性變數跟靜態變數一樣

,儲存在全域性區

(也叫靜態區

).它是由系統開闢空間,程式執行過程中一直存在,直到程式退出,由系統**.

四.常量區:

用於存放常量的記憶體區域

五.**區:

存放源**程式設計結果的區域.

記憶體分配管理

系統中的記憶體分為棧 堆 全域性區 區 棧 由編譯器自動分配釋放,參訪函式的引數值,區域性變數,函式棧幀,函式呼叫過程。堆 由程式設計師自行分配想要的空間大小,c中的malloc等函式,c 中的new 全域性區 資料區 存放的是全域性變數和靜態變數,初始化的存在一起,未初始化的放一起,程式結束後由系...

記憶體分配 Go記憶體管理 記憶體分配一

go作為乙個比較新晚 新 的語言,自然借鑑前輩們的優點,比如說語言本身負責記憶體管理 對協程和高併發的高優支援 簡單高效的語法等。本篇及後續的幾篇要講的就是還沒提到的比較複雜的記憶體管理。學習記憶體管理 分配 前,如果有jvm的記憶體管理的基礎,會變得非常簡單,如果是第一次接觸記憶體管理,在看完go...

指標以及記憶體分配

指標很靈活,這使得指標很難管理,在定義指標時,將在棧中開闢一塊記憶體存放指標的位址 棧內的記憶體由系統分配和釋放 指標的位址記憶體只是存放指標的位址,不存放指標指向的資料,值得注意的是,定義指標時指標會隨機指向一塊記憶體,如int p p會指向一塊不為空的記憶體,相當危險,例如執行判斷if p 這裡...