當前位置:維知科普網 >

生活

> 堆和棧的區別

堆和棧的區別

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

堆和棧的區別

空間分配區別

棧(操作系統):由操作系統(編譯器)自動分配釋放 ,存放函數的參數值,局部變量的值等。其操作方式類似於數據結構中的棧。堆(操作系統): 一般由程序員分配釋放, 若程序員不釋放,程序結束時可能由OS回收,分配方式倒是類似於鏈表。

堆棧緩存方式區別

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

堆和棧的區別 第2張

堆棧數據結構區別

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

標籤:
  • 文章版權屬於文章作者所有,轉載請註明 https://wzkpw.com/sh/4144z.html