日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

值類型和引用類型的區別 I 數據結構中的堆和棧和內存中的堆和棧的區別

作者:Z_hongli 更新時間: 2022-11-14 編程語言

值類型和引用類型的區別 I 數據結構中的堆和棧和內存中的堆和棧的區別

  • 一、值類型和引用類型
  • 二、值類型和引用類型的區別
  • 三、數據結構中的堆和棧和內存中的堆和棧的區別
    • (一)數據結構中的堆和棧
      • 1.棧:裝數據的桶或者箱子
      • 2.堆:一顆倒立的大樹
    • (二)內存中的堆和棧

一、值類型和引用類型

類型 數據類型
值類型 Int float bool char struct enum
引用類型 string class interface delegate array

二、值類型和引用類型的區別

  1. 值類型存儲快,引用類型存儲慢
  2. 值類型表示實際的數據,引用類型表示指向存儲在內存中數據的指針和引用
  3. 值類型繼承自System.valueType,引用類型繼承自System.Object
  4. 值類型存儲在棧中,引用類型存儲在堆中
  5. 棧內的內存會自動釋放,堆中的內存由.NET中的GC自動釋放

三、數據結構中的堆和棧和內存中的堆和棧的區別

(一)數據結構中的堆和棧

堆和棧都是一種數據項按序排列的數據結構

1.棧:裝數據的桶或者箱子

棧是一種具有后進先出的數據結構,也就是說后存放的先取,先存放的后取,這就類似于我們要在取放在箱子底部的東西,我們首先要移開壓在它上面的物體。

2.堆:一顆倒立的大樹

堆是一種經過排序的樹形數據結構,每個節點都有一個值。通常我們所說的堆的數據結構是指二叉樹。堆的特點是根節點的值最小(或最大),且根節點的兩個樹也是一個堆。由于堆的這個特性,常用來實現優先隊列,堆的存取是隨意的,這就如同我們在圖書館的書架上取書,雖然書的擺放是有順序的,但是我們想取任意一本時不必像棧一樣,先取出前面所有的書,書架這種機制不同于箱子,我們可以直接取出我們想要的書。

(二)內存中的堆和棧

內存中的棧區處于相對較高的地址,以地址的增長方向為上的話,棧地址是向下增長的

棧中分配局部變量空間,堆區是向上增長的用于分配程序員申請的內存空間。另外還有靜態區是分配靜態變量,全局變量空間的。只讀區是分配常量和程序代碼空間的;以及其他一些分區。

原文鏈接:https://blog.csdn.net/Z_hongli/article/details/127837494

欄目分類
最近更新