跳至主要内容

[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

資料來源