堆棧的區別

堆棧的區別:

堆棧都是一種數據項按序排列的數據結構,只能在一端(稱為棧頂(top))對數據項進行插入和刪除。在單片機應用中,堆棧是個特殊的存儲區,主要功能是暫時存放數據和地址,通常用來保護斷點和現場。

所有的數據存入或取出,只能在浮動的一端(稱棧頂)進行,嚴格按照“先進後出”的原則存取,位於其中間的元素,必須在其棧上部(後進棧者)諸元素逐個移出後才能取出。

1、空間分配不同:棧由操作系統自動分配釋放,存放函數的參數值,局部變量的值等。其操作方式類似於數據結構中的棧。

堆棧的區別

堆(操作系統)一般由程序員分配釋放,若程序員不釋放,程序結束時可能由OS回收,分配方式倒是類似於鏈表。

2、緩存方式不同:棧使用的是一級緩存,他們通常都是被調用時處於存儲空間中,調用完畢立即釋放。

而堆是存放在二級緩存中,生命週期由虛擬機的回收算法來決定(並不是一旦成為孤兒對象就能被回收)。所以,調用這些對象的速度要相對來得低一些。

3、數據結構不同:堆可以被看成是一棵樹,如堆排序;棧是一種先進後出的數據結構。