棧記憶體和堆記憶體有什麼區別?

2021-09-21 06:22:51 字數 908 閱讀 8875

棧記憶體堆記憶體是什麼?

棧記憶體堆記憶體都是儲存資料的地方。

為什麼會分棧記憶體堆記憶體??

因為棧記憶體中儲存的值的大小是固定的,堆記憶體中儲存值的大小不固定的。

目前有5種基本資料型別:stringnumberbooleannullnull,這5種基本資料型別傳遞時,是按值傳遞的;在分配記憶體時,會分配固定大小的記憶體空間。

```let a = 1

let b = a

b = 3

console.log( a ) // 1

a=1因為1是基本資料型別,所以會在棧記憶體中分配固定大小的空間給a

b=a因為a是基本資料型別,所以會在棧記憶體中分配固定大小的空間給b,並存入值為1

引用資料型別因為大小不固定,所以會存在堆記憶體中,棧記憶體中存的是堆記憶體的位址,每次讀取值時,先找到棧記憶體中的記憶體位址,在通過記憶體位址,找到在堆記憶體中的對應的物件。

參考位址

posted @

2019-03-22 18:17

daivdandlemon 閱讀(

...)

編輯收藏

堆記憶體和棧記憶體

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

堆記憶體和棧記憶體

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

棧記憶體和堆記憶體

在平時寫 的時候經常遇到一些很簡單但是自己卻不太理解的問題,於是整理了一下。記憶體 一般情況下我們分為棧記憶體和堆記憶體。下面我們來說說它們的區別。一 棧記憶體 用於儲存區域性變數,當資料用完的時候,它所占用的空間會自動釋放。public class demo1 return j i 這裡的 i j...