您的位置:首頁 > 電腦教程 > 電腦常識 返回首頁

堆和棧的區(qū)別先進先出

時間:2021-03-07 20:56:35  來源:網(wǎng)絡(luò)

堆和棧的區(qū)別:

一、堆?臻g分配區(qū)別: 1、棧(操作系統(tǒng)):由操作系統(tǒng)自動分配釋放 ,存放函數(shù)的參數(shù)值,局部變量的值等。其操作方式類似于數(shù)據(jù)結(jié)構(gòu)中的棧; 2、堆(操作系統(tǒng)): 一般由程序員分配釋放, 若程序員不釋放,程序結(jié)束時可能由OS回收,分配方式倒是類似于鏈表。 二、堆棧緩存方式區(qū)別: 1、棧使用的是一級緩存, 他們通常都是被調(diào)用時處于存儲空間中,調(diào)用完畢立即釋放; 2、堆是存放在二級緩存中,生命周期由虛擬機的垃圾回收算法來決定(并不是一旦成為孤兒對象就能被回收)。所以調(diào)用這些對象的速度要相對來得低一些。 堆:內(nèi)存中,存儲的是引用數(shù)據(jù)類型,引用數(shù)據(jù)類型無法確定大小,堆實際上是一個在內(nèi)存中使用到內(nèi)存中零散空間的鏈表結(jié)構(gòu)的存儲空間,堆的大小由引用類型的大小直接決定,引用類型的大小的變化直接影響到堆的變化 棧:是內(nèi)存中存儲值類型的,大小為2M,超出則會報錯,內(nèi)存溢出 三、堆棧數(shù)據(jù)結(jié)構(gòu)區(qū)別: 堆(數(shù)據(jù)結(jié)構(gòu)):堆可以被看成是一棵樹,如:堆排序; 棧(數(shù)據(jù)結(jié)構(gòu)):一種先進后出的數(shù)據(jù)結(jié)構(gòu)。 特點:先進后出 對于先進后出,因為Linklist底層實現(xiàn)的是鏈表結(jié)構(gòu),所以我們拿Linklist來探索一下什么叫先進后出 代碼如下:
運行結(jié)果:
根據(jù)這個簡單的實例我們可以看出,通過for循環(huán)我們在集合添加數(shù)據(jù)的順序分別為0,1,2,3,4, 當執(zhí)行刪除方法的時候4被刪除,最后遍歷出的結(jié)果為3,2,1,0 所以它體現(xiàn)了堆棧的特點:先進后出。。
上一個電腦教程:怎么做seo關(guān)鍵詞優(yōu)化
下一個電腦教程:登qq老提示錯誤0x0006000d怎么辦