乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

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

       kiki的號(hào) 2017-06-20

      理解堆與棧

      導(dǎo)航

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

      深入淺出圖解C#堆與棧 C# Heap(ing) VS Stack(ing) 第二節(jié) 棧基本工作原理

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

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

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


      前言


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


      簡(jiǎn)介

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

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


      堆與棧:有什么不同?


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

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



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

      什么在堆和棧里


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

      值類(lèi)型:

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

      引用類(lèi)型:

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


      指針:


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





      指令:


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



      總結(jié)


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




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

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類(lèi)似文章 更多