聯(lián)系我們 - 廣告服務(wù) - 聯(lián)系電話:
您的當(dāng)前位置: > 關(guān)注 > > 正文

世界速訊:堆與棧有什么區(qū)別?堆與棧的區(qū)別詳細(xì)總結(jié)

來(lái)源:CSDN 時(shí)間:2023-03-09 09:07:02

1、堆與棧的區(qū)別詳細(xì)總結(jié)_Fighting++++的博客-CSDN博客_堆和棧的區(qū)別


【資料圖】

2、堆和棧的區(qū)別 - 江雨牧 - 博客園 

3、堆和棧的區(qū)別_內(nèi)外皆秀的博客-CSDN博客_堆和棧的區(qū)別 

4、一文讀懂堆與棧的區(qū)別_戀喵大鯉魚(yú)的博客-CSDN博客_堆和棧的區(qū)別

一般情況下,如果有人把堆棧合起來(lái)說(shuō),那它的意思是棧,可不是堆。

堆和棧的區(qū)別是什么?

1、堆棧空間分配區(qū)別

棧(操作系統(tǒng)):由操作系統(tǒng)(編譯器)自動(dòng)分配釋放 ,存放函數(shù)的參數(shù)值,局部變量的值等。其操作方式類(lèi)似于數(shù)據(jù)結(jié)構(gòu)中的棧。

堆(操作系統(tǒng)): 一般由程序員分配釋放, 若程序員不釋放,程序結(jié)束時(shí)可能由OS回收,分配方式倒是類(lèi)似于鏈表。

2、堆棧緩存方式區(qū)別

棧使用的是一級(jí)緩存, 它們通常都是被調(diào)用時(shí)處于存儲(chǔ)空間中,調(diào)用完畢立即釋放。

堆則是存放在二級(jí)緩存中,生命周期由虛擬機(jī)的垃圾回收算法來(lái)決定(并不是一旦成為孤兒對(duì)象就能被回收)。所以調(diào)用這些對(duì)象的速度要相對(duì)來(lái)得低一些。

3、堆棧數(shù)據(jù)結(jié)構(gòu)區(qū)別

堆(數(shù)據(jù)結(jié)構(gòu)):堆可以被看成是一棵樹(shù),如:堆排序。先進(jìn)先出的結(jié)構(gòu)。

棧(數(shù)據(jù)結(jié)構(gòu)):一種先進(jìn)后出的數(shù)據(jù)結(jié)構(gòu)。

堆和棧的區(qū)別

堆和棧的區(qū)別主要有五大點(diǎn),分別是:

1、申請(qǐng)方式的不同。棧由系統(tǒng)自動(dòng)分配,而堆是人為申請(qǐng)開(kāi)辟;

2、申請(qǐng)大小的不同。棧獲得的空間較小,而堆獲得的空間較大;

3、申請(qǐng)效率的不同。棧由系統(tǒng)自動(dòng)分配,速度較快,而堆一般速度比較慢;

4、存儲(chǔ)內(nèi)容的不同。棧在函數(shù)調(diào)用時(shí),函數(shù)調(diào)用語(yǔ)句的下一條可執(zhí)行語(yǔ)句的地址第一個(gè)進(jìn)棧,然后函數(shù)的各個(gè)參數(shù)進(jìn)棧,其中靜態(tài)變量是不入棧的。而堆一般是在頭部用一個(gè)字節(jié)存放堆的大小,堆中的具體內(nèi)容是人為安排;

5、底層不同。棧是連續(xù)的空間,而堆是不連續(xù)的空間。

責(zé)任編輯:

標(biāo)簽: 數(shù)據(jù)結(jié)構(gòu)

精彩放送:

新聞聚焦
Top