棧記憶體
、堆記憶體
是什麼?
棧記憶體
和堆記憶體
都是儲存資料的地方。
為什麼會分棧記憶體
和堆記憶體
??
因為棧記憶體
中儲存的值的大小是固定的,堆記憶體
中儲存值的大小不固定的。
目前有5種基本資料型別:string
、number
、boolean
、null
、null
,這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...