您的位置:首頁(yè) > 電腦教程 > 電腦常識(shí) 返回首頁(yè)

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

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

堆和棧的區(qū)別:

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