古詩詞大全網 - 字典詞典 - 堆和棧(Heap and Stack)的區別!

堆和棧(Heap and Stack)的區別!

堆(Heap):隊列優先,先進先出(FIFO—first in first out);

棧(Stack):先進後出(FILO—First-In/Last-Out);

如果有人把堆棧合起來說,那他很可能說的是棧!

棧(Stack):

棧(Stack)是暫存空間(scratch space),主要用於內部計算。當函數被調用時,棧(Stack)隊列上有壹塊區域會被分配出來用作存儲局部變量和數據。當函數返回時,這塊區域會被釋放!由於棧(Stack)是FILO隊列,所以,最近被使用的區域會最先被釋放,最後被使用的區域被後釋放!棧(Stack)的使用不需要我們操心!

堆(Heap):

堆(Heap)是動態分配的,妳可以在任意時間自由分配!使用起來肯定比棧(Stack)復雜,但是也給了我們靈活性!

操作系統在線程建立時會自動為系統級線程分配Stack,而Heap的分配是由程序運行時調用系統完成的!Stack的速度比Heap要快的多!

Image source:? vikashazrati.wordpress.com