程序運行時,它的數據必須存儲在內存中。一個數據項須要多大的內存、存儲在內存中的什麼位置、以及如何存儲都依賴於該數據項的類型。程序員
運行中的程序使用兩個內存區域來存儲數據:棧和堆。編程
棧是一個內存數組,是一個 LIFO (Last-In First-Out,後進先出)的數據結構。棧存儲幾種類型的數據:數組
系統管理全部的棧操做。做爲程序員,你不須要顯式地對它作任何事情。但瞭解棧的基本功能能夠更好地瞭解程序在運行時正在作什麼。數據結構
提示: 棧也常常被稱爲堆棧,而堆依然稱爲堆,因此堆棧這個概念並不包含堆,你們要注意區分。編程語言
棧有以下幾個廣泛特徵:對象
堆是一塊內存區域,在堆裏能夠分配大塊的內存用於存儲某類型的數據對象。與棧不一樣,堆裏的內存可以以任意順序存人和移除。下圖展現了一個在堆裏放了 4 項數據的程序。blog
雖然程序能夠在堆裏保存數據,但並不能顯式地刪除它們。CLR 的自動 GC(Garbage Collector,垃圾收集器)在判斷出程序的代碼將不會再訪問某數據項時,自動清除無主的堆對象。咱們所以能夠再也不操心這項使用 C 編程語言時很是容易出錯的工做了。下圖闡明瞭垃圾收集過程。內存
本篇介紹了棧和堆最最最基本的概念,主要是爲下一篇(地址:https://www.vinanysoft.com/c-sharp-basics/data-types/categories-of-types/)介紹值類型和引用類型打基礎。get