棧記憶體和堆記憶體

2021-07-30 14:48:33 字數 476 閱讀 6608

在平時寫**的時候經常遇到一些很簡單但是自己卻不太理解的問題,於是整理了一下。

記憶體:一般情況下我們分為棧記憶體和堆記憶體。下面我們來說說它們的區別。

一、棧記憶體:用於儲存區域性變數,當資料用完的時候,它所占用的空間會自動釋放。

public class demo1 

return j+i;//這裡的 i j m n j+i 都是屬於區域性變數

}}

二、堆記憶體:一般是儲存陣列、物件(就是通過new program() 建立的例項化)和全域性變數。

特點是每乙個實體都要其對應的位址值,並且實體中的變數都有其對應的預設初始化值(例:int 預設是       0,boolean 預設是false,否就為null),當實體不被使用的時候,會在乙個不確定的時間被**機制自動處理。

public class demo1 

}

堆記憶體和棧記憶體

堆 順序隨意 棧 先進後出 堆和棧的區別 一 預備知識 程式的記憶體分配 乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 1 棧區 stack 由編譯器自動分配釋放 存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧 2 堆區 heap 一般由程式設計師分配釋放,若程式設計師不...

堆記憶體和棧記憶體

一 預備知識 程式的記憶體分配 乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 1 棧區 stack 由編譯器自動分配釋放 存放函式的引數值,區域性變數的值等。其操作方式 類似於資料結構中的棧 2 堆區 heap 一般由程式設計師分配釋放 若程式設計師不釋放,程式結束時可能由 os 注意它與資...

棧記憶體和堆記憶體

棧記憶體 由程式自動向作業系統申請分配以及 程式啟動時統一分配此後不能再擴大,決定了遞迴深度有上限,但是 一般情況下遞迴上萬次是可以的,速度快,使用方便,但程式設計師無法控制。若分配失敗,則提示棧溢位錯誤。棧區向位址減小的方向增長,const區域性變數也儲存在棧區內,主調函式所擁有的區域性變數等資訊...