網站首頁 教育 學前教育 精緻生活 飲食養生 命理 科普教育 金融 歷史 影視 數碼 熱門資訊
當前位置:生活百科站 > 精緻生活 > 

堆和棧的區別

欄目: 精緻生活 / 釋出於: / 人氣:1.1W

在計算機領域,堆疊絕對是一個不容忽視的概念,並且在編寫 C 語言程式的時候也會頻繁用到。但對大多數 C 語言初學者來說,堆疊卻是一個很模糊的概念。那麼堆和棧的區別是什麼?

堆和棧的區別

空間分配區別

棧(作業系統):由作業系統(編譯器)自動分配釋放 ,存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。堆(作業系統): 一般由程式設計師分配釋放, 若程式設計師不釋放,程式結束時可能由OS回收,分配方式倒是類似於連結串列。

堆疊快取方式區別

棧使用的是一級快取, 它們通常都是被呼叫時處於儲存空間中,呼叫完畢立即釋放。堆則是存放在二級快取中,生命週期由虛擬機器的垃圾回收演算法來決定(並不是一旦成為孤兒物件就能被回收)。所以呼叫這些物件的速度要相對來得低一些。

堆和棧的區別 第2張

堆疊資料結構區別

堆(資料結構):堆可以被看成是一棵樹,如:堆排序。棧(資料結構):一種先進後出的資料結構。

Tags: