最近兩個主題我們談到了「堆疊 (Stack)」和「堆積 (Heap)」,即使它們在中文上只有一字之差,但在電腦科學中,它們的用途和特性是非常不同的。
1. 堆疊 (Stack)
堆疊是一種後進先出(LIFO, Last In, First Out)的資料結構。想像一下疊盤子,最後放上去的盤子會是第一個拿走的。電腦在執行程式時,特別是處理函數呼叫和局部變數時,會使用堆疊。
特性:
2. 堆積 (Heap)
堆積則是用來動態分配記憶體的區域。當程式需要分配記憶體,但無法預先確定需要多大空間時,會向堆積申請記憶體。不同於堆疊,堆積的存取是無序的。
特性:
3. 異同點詳細分析:
記憶體分配方式
堆疊 (Stack):
堆積 (Heap):
new
或 malloc()
等)。存取順序與方式
堆疊 (Stack):
堆積 (Heap):
生命週期
堆疊 (Stack):
堆積 (Heap):
delete
或 free()
)。應用場景
堆疊 (Stack):
堆積 (Heap):
效能
堆疊 (Stack):
堆積 (Heap):
參考資料: