【C#之棧和堆初遇】
前言:
小編是一個剛剛入門的小菜鳥,初見面這兩個兄弟,一下子不知索然,,,不用怕,自己動手查查就一清二白了,米老師經常說的,不怕不知道就怕不知道,無論什麼時候,學習是永無止境的,知識是永無止境的!下面我們們一起來看看棧和堆這兩個兄弟吧!
正文:
一、總說
程式執行時,它的資料必須儲存在記憶體中。棧和堆的作用就來了,執行中的程式使用這兩個記憶體區域來儲存資料。
二、棧
1、含義:
棧是一個記憶體陣列,是一個LIFO(last-in first-out,後進先出)的資料結構。這個在下面的舉例中更加清楚的有所瞭解。
2、儲存資料型別
3、特徵
資料只能從棧的頂端插入和刪除。
解釋:入棧:把資料放到棧頂
出棧:從棧頂刪除資料
棧頂:一個棧分為空閒的資料記憶體和儲存資料的記憶體,儲存資料的記憶體如果從底部依次向上為100,200,則200的上部為棧頂,向棧頂放入一個300,則300的上部為棧頂。
如圖所示:
二、堆
1、含義
堆是一塊記憶體區域,在堆裡可以分配大塊的記憶體用於儲存某型別的資料。
2、特點
存放引用型別
3、垃圾收集過程
三、區別
四、注意問題
在用到棧和堆的過程中,都要防止越界現象的發生。
總結:
剛剛接觸這個概念,理解的不是很深刻,有什麼錯誤歡迎大家給我指正,在以後的學習中,會繼續學習的!學習不是一次性的過程,繼續學習中。
相關文章
- JavaScript理解堆和棧JavaScript
- C#以及其他語言環境下的堆和棧C#
- JVM之棧、堆、方法區(三)JVM
- 堆和棧的概念和區別
- C#引用型別和值型別在堆、棧中的儲存C#型別
- 如何正確理解棧和堆?
- Java中棧和堆講解Java
- 堆和棧的解釋和區別
- 堆和棧在物理上的區別
- C++中堆和棧的完全解析C++
- python堆和棧的區別有哪些Python
- Python中堆、棧、佇列之間的區別Python佇列
- 堆、棧以及佇列佇列
- 記憶體四區之程式碼區,全域性區,棧區和堆區記憶體
- JavaScript中記憶體使用規則--堆和棧JavaScript記憶體
- 初遇python--之新手學資料分析(1)Python
- 記憶體中發堆和棧,棧是執行時的單位,而堆是儲存的單位記憶體
- The Stack and the Heap棧與堆__RustRust
- C#堆疊(Stack)C#
- 記憶體分配策略中,堆和棧的區別記憶體
- 資料結構之堆:初學只需一文資料結構
- JAVA堆區棧區方法區Java
- JVM(程式計數器,棧,堆)JVM
- 演算法-棧佇列堆演算法佇列
- 劫持TLS繞過canary && 堆和棧的靈活轉換TLS
- CSS之定位和堆疊屬性CSS
- JS 變數儲存?棧 & 堆?NONONO!JS變數
- C#初學C#
- Java之String和StringBuffer堆疊圖分析Java
- Jvm(27.14.2),理解升級---堆,棧,方法區JVM
- 初識前端中的棧前端
- 簡單資料型別和引用資料型別對應棧和堆示意圖資料型別
- 棧(Stack) --- C# 自定義和微軟官方的區別C#微軟
- 棧與堆的區別以及增長方向
- 吃人的那些 Java 名詞:物件、引用、堆、棧Java物件
- 2020/12/5 棧佇列堆(牛客網)佇列
- 2020/12/9 棧佇列堆(牛客網)佇列
- 排序演算法之歸併,快速,堆和桶排序演算法
- dotnet C# 結構體出方法彈棧之後的行為C#結構體