[CS] 堆疊和堆積(Stack Memory and Heap Memory)
Stack Memory(堆疊)
- Stack memory 是根據 stack 這種 FILO 的概念所實作的記憶體,和資料結構中的 stack,並不是完全一樣的東西
- Stack memory 是用來保存由函式所產生的暫時性變數(區域變數),這些變數會在 runtime 的過程中會宣告、保存和初始化。
- 它使用的是暫時性的記憶體空間,一但任務完成(函式執行結束後),這些記憶體會自動被抹去
- 特性是 LIFO(Last In First Out,後進先出)
Heap Memory(堆積)
- heap 是程式語言用來保存全域變數(global variables)的記憶體位址,預設的情況下,所有全域變數都會保存在 heap memory 中。
使用 Heap 或 Stack
- 如果需要分派一大塊記憶體空間,則應該使用 heap
- 如果只是處理在函式中會用到的變數,則應該使用 stack
資料來源
- Stack vs Heap: Know the Difference @ guru99