目錄
- 堆疊
- 堆疊的特征
- 堆
- 總結
程式運行時,它的資料必須存盤在記憶體中,一個資料項需要多大的記憶體、存盤在記憶體中的什么位置、以及如何存盤都依賴于該資料項的型別,
運行中的程式使用兩個記憶體區域來存盤資料:堆疊和堆,
堆疊
堆疊是一個記憶體陣列,是一個 LIFO (Last-In First-Out,后進先出)的資料結構,堆疊存盤幾種型別的資料:
- 某些型別變數的值
- 程式當前的執行環境
- 傳遞給方法的引數
系統管理所有的堆疊操作,作為程式員,你不需要顯式地對它做任何事情,但了解堆疊的基本功能可以更好地了解程式在運行時正在做什么,
提示: 堆疊也經常被稱為堆疊,而堆依然稱為堆,所以堆疊這個概念并不包含堆,大家要注意區分,
堆疊的特征
堆疊有如下幾個普遍特征:
- 資料只能從堆疊的頂端插人和洗掉
- 把資料放到堆疊頂稱為入堆疊(push)
- 從堆疊頂洗掉資料稱為出堆疊(pop)
堆
堆是一塊記憶體區域,在堆里可以分配大塊的記憶體用于存盤某型別的資料物件,與堆疊不同,堆里的記憶體能夠以任意順序存人和移除,下圖展示了一個在堆里放了 4 項資料的程式,
雖然程式可以在堆里保存資料,但并不能顯式地洗掉它們,CLR 的自動 GC(Garbage Collector,垃圾收集器)在判斷出程式的代碼將不會再訪問某資料項時,自動清除無主的堆物件,我們因此可以不再操心這項使用 C 編程語言時非常容易出錯的作業了,下圖闡明了垃圾收集程序,
總結
本篇介紹了堆疊和堆最最最基本的概念,主要是為下一篇(地址:https://www.vinanysoft.com/c-sharp-basics/data-types/categories-of-types/)介紹值型別和參考型別打基礎,
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/91574.html
標籤:C#
上一篇:C# 中的 bool、char 和 string 型別
下一篇:C# 中的值型別和參考型別
