小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

深入淺出圖解C#堆與棧 C# Heap(ing) VS Stack(ing) 第一節(jié) 理解堆與棧

 kiki的號 2017-06-20

理解堆與棧

導(dǎo)航

深入淺出圖解C#堆與棧 C# Heap(ing) VS Stack(ing) 第一節(jié) 理解堆與棧

深入淺出圖解C#堆與棧 C# Heap(ing) VS Stack(ing) 第二節(jié) ?;竟ぷ髟?/a>

深入淺出圖解C#堆與棧 C# Heap(ing) VS Stack(ing) 第三節(jié) 棧與堆,值類型與引用類型

深入淺出圖解C#堆與棧 C# Heap(ing) VS Stack(ing) 第四節(jié) 參數(shù)傳遞對堆棧的影響 1

深入淺出圖解C#堆與棧 C# Heap(ing) VS Stack(ing) 第四節(jié) 參數(shù)傳遞對堆棧的影響 2


前言


雖然在.Net Framework 中我們不必考慮內(nèi)在管理和垃圾回收(GC),但是為了優(yōu)化應(yīng)用程序性能我們始終需要了解內(nèi)存管理和垃圾回收(GC)。另外,了解內(nèi)存管理可以幫助我們理解在每一個程序中定義的每一個變量是怎樣工作的。


簡介

這篇文章會包含堆與棧的基礎(chǔ)知識,變量類型,變量工作原理。

在程序運(yùn)行時,.NET FRAMEWORK把對象存儲在內(nèi)存中的兩個位置:堆與棧,并且它們都會幫助我們更好的運(yùn)行程序。堆與棧寄存在電腦的操作內(nèi)存中,并包含我們需要的信息使整個程序運(yùn)行正常。


堆與棧:有什么不同?


,或多或少負(fù)責(zé)跟蹤正在程序中運(yùn)行的代碼。
,或多或少負(fù)責(zé)跟蹤程序?qū)ο蠡驍?shù)據(jù)。

棧,把它想像成疊在一起的盒子(像搭積木一樣)。每一次調(diào)用一個方法就會在最上面疊一個盒子,用來跟蹤程序運(yùn)行情況。我們只能使用棧中疊在最上面的盒子里的東西。當(dāng)某一最上面的盒子里的代碼執(zhí)行完畢(如方法執(zhí)行完成),就把它扔掉并繼續(xù)去使用下一個盒子。
堆,與棧類似,只是它是用來保存信息而不是跟蹤執(zhí)行。所以,堆里的任何信息都可以在任何時間被訪問。有了堆,訪問信息沒有約束,而不像棧只能訪問最上面的盒子。
堆的情況就像你把一堆剛洗完的衣服放在床上還沒有時間來的及收走,你可以迅速拿到你想要拿的衣服。棧的情況就像你疊在一起的鞋盒子,你需要拿走最上面的盒子才能拿到下一個盒子。



上圖并不上真正的內(nèi)存運(yùn)行情況,只是為了讓大家區(qū)分堆和棧。
棧,會自我管理,它有自己的內(nèi)存管理機(jī)制。當(dāng)最上面的盒子不再使用時,會自動被扔掉。
堆,相反,我們要控制它的垃圾回收(GC)。我們要去管理堆是否干凈,就像管理床上的臟衣服。你不手動扔掉它,就會在床上變臭。

什么在堆和棧里


當(dāng)程序執(zhí)行時,我們主要有4種類型的東西放進(jìn)堆和棧里:值類型,引用類型,指針,指令。

值類型:

  • bool
  • byte
  • char
  • decimal
  • double
  • enum
  • float
  • int
  • long
  • sbyte
  • short
  • struct
  • uint
  • ulong
  • ushort
它們都衍生于System.ValueType。

引用類型:

  • class
  • interface
  • delegate
  • object
  • string
它們都衍生于System.Object。當(dāng)然object就是System.Object。


指針:


第三種被放于內(nèi)存管理體制中的是類型的引用。這個引用通常被叫作指針。我們并不具體的使用指針,它們由CLR管理。一個指針(引用)是不同于引用類型的。我們定義它是一個引用類型,意味著我們可以通過指針訪問它。一個指針占有一小塊內(nèi)存,這塊內(nèi)存指向另一塊內(nèi)存。指針占用在內(nèi)存中的存儲和其它的相同,只是存放的值既不是內(nèi)存地址也不是空null。





指令:


我們會在后面的文章中介紹指令怎么工作。



總結(jié)


第一節(jié)到此結(jié)束,以后的章節(jié)里會介紹不同對象在堆和棧里存放的不同。




    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多