1、什麼是棧? 棧是一個記憶體數組,是一個後進先出的數據結構; 幾種數據類型: 1、某些類型變數的值; 2、程式當前的執行環境; 3、傳遞給方法的參數; 幾個普遍特征: 1、數據只能從棧的頂端插入和刪除; 2、把數據放到棧頂成為入棧; 3、從棧頂刪除數據成為出棧; 2、什麼是堆? 堆是一塊記憶體區域,在 ...
1、什麼是棧?
棧是一個記憶體數組,是一個後進先出的數據結構;
幾種數據類型:
1、某些類型變數的值;
2、程式當前的執行環境;
3、傳遞給方法的參數;
幾個普遍特征:
1、數據只能從棧的頂端插入和刪除;
2、把數據放到棧頂成為入棧;
3、從棧頂刪除數據成為出棧;
2、什麼是堆?
堆是一塊記憶體區域,在堆里可以分配大塊的記憶體用於存儲某類型的數據對象;
堆的特征:
1、堆裡面的記憶體能夠以任意順序存入和移除;
2、不能顯示地刪除程式在堆裡面保存的數據;
3、靠CLR的自動GC(垃圾收集器)判斷並自動清除無主的堆對象,然後釋放它;
4、被釋放對象的記憶體可以被重用;
3、棧和堆什麼區別?
1、存放的數據類型不同;
2、棧只能從頂端插入和刪除,堆能夠以任意順序存入和移除;
3、棧記憶體無需管理,也不受GC管理。當棧頂元素使用完畢,立馬釋放。而堆則需要GC(Garbage collection:垃圾收集器)清理;
4、棧由系統自動分配,速度較快。但是無法控制。堆則是那些由new分配的記憶體塊,他們的釋放編譯器不去管,由我們的應用程式去控制,一般速度比較慢,而且容易產生記憶體碎片;
4、其實用不著深入追究什麼是“堆”和“棧”,他們都是一塊記憶體,又都是用來儲存數據的。