【C#之棧和堆初遇】
前言:
小編是一個剛剛入門的小菜鳥,初見面這兩個兄弟,一下子不知索然,,,不用怕,自己動手查查就一清二白了,米老師經常說的,不怕不知道就怕不知道,無論什麼時候,學習是永無止境的,知識是永無止境的!下面我們們一起來看看棧和堆這兩個兄弟吧!
正文:
一、總說
程式執行時,它的資料必須儲存在記憶體中。棧和堆的作用就來了,執行中的程式使用這兩個記憶體區域來儲存資料。
二、棧
1、含義:
棧是一個記憶體陣列,是一個LIFO(last-in first-out,後進先出)的資料結構。這個在下面的舉例中更加清楚的有所瞭解。
2、儲存資料型別
3、特徵
資料只能從棧的頂端插入和刪除。
解釋:入棧:把資料放到棧頂
出棧:從棧頂刪除資料
棧頂:一個棧分為空閒的資料記憶體和儲存資料的記憶體,儲存資料的記憶體如果從底部依次向上為100,200,則200的上部為棧頂,向棧頂放入一個300,則300的上部為棧頂。
如圖所示:
二、堆
1、含義
堆是一塊記憶體區域,在堆裡可以分配大塊的記憶體用於儲存某型別的資料。
2、特點
存放引用型別
3、垃圾收集過程
三、區別
四、注意問題
在用到棧和堆的過程中,都要防止越界現象的發生。
總結:
剛剛接觸這個概念,理解的不是很深刻,有什麼錯誤歡迎大家給我指正,在以後的學習中,會繼續學習的!學習不是一次性的過程,繼續學習中。
相關文章
- JavaScript理解堆和棧JavaScript
- JAVA的堆和棧(轉)Java
- 堆和棧的區別
- "堆"和"棧"的基本概念(C/C++初學者必讀) (轉)C++
- JVM之棧、堆、方法區(三)JVM
- 堆和棧的概念和區別
- Java中棧和堆講解Java
- 如何正確理解棧和堆?
- java堆和棧的區別Java
- C#引用型別和值型別在堆、棧中的儲存C#型別
- 堆和棧的解釋和區別
- C#中堆和堆疊的區別C#
- Java中堆和棧的區別Java
- 基礎——堆和棧的區別
- 堆(heap)和棧(stack)的區別
- 堆和棧在物理上的區別
- C++中堆和棧的完全解析C++
- 堆和棧在程式中的比較
- python堆和棧的區別有哪些Python
- 堆、棧以及佇列佇列
- 圖解C#的值型別,引用型別,棧,堆,ref,out圖解C#型別
- 記憶體四區之程式碼區,全域性區,棧區和堆區記憶體
- JavaScript中記憶體使用規則--堆和棧JavaScript記憶體
- The Stack and the Heap棧與堆__RustRust
- 記憶體中發堆和棧,棧是執行時的單位,而堆是儲存的單位記憶體
- C#實現棧和佇列C#佇列
- 記憶體分配策略中,堆和棧的區別記憶體
- 關於記憶體中棧和堆的區別記憶體
- 詳細介紹Java中的堆、棧和常量池Java
- 初遇python--之新手學資料分析(1)Python
- 資料結構之堆:初學只需一文資料結構
- C#堆疊(Stack)C#
- 演算法-棧佇列堆演算法佇列
- JAVA堆區棧區方法區Java
- 堆和棧的區別(轉過無數次的文章)
- 堆記憶體和棧記憶體詳解(轉載)記憶體
- java棧記憶體和堆記憶體的詮釋Java記憶體
- [CLR via C#]4. 型別基礎及型別、物件、棧和堆執行時的相互聯絡C#型別物件