對于一些新人可能會不理解棧和堆是什么,在這里我簡單介紹一下:
程序運行時,它的數據必須存儲在內存中。一個數據項需要多大的內存、存儲在什么地方、以及如何存儲都依賴與該數據項的類型。
運行中的程序使用兩個內存區域來存儲數據:棧和堆。
首先,什么是“棧”?
棧是一個內存數組,是一個LIFO(last-in first-out,后進先出)的數據結構。棧存儲幾種類型的數據:
棧的特征:
棧有如下幾個普遍特征:
什么是“堆”?
堆是一塊內存區域,在堆里可以分配大塊的內存用于存儲某類型的數據。與棧不同,堆里的內存可以任意順序存入和移除。
雖然程序可以在堆里保存數據,但并不能顯示地刪除它們。CLR的自動GC(Garbage Collector,垃圾收集器)在判斷出程序的
代碼將不會再訪問某數據項是,自動清除無助的堆對象。我們因此可以不再操心這項使用其他編程語言時非常容易出錯的工作了。
堆棧空間分配:
總之:堆,隊列優先,先進先出,棧,先進后出,而且棧的存取速度比堆快。
新聞熱點
疑難解答