溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#中的堆和棧是什么

發(fā)布時間:2020-07-15 10:37:38 來源:億速云 閱讀:383 作者:Leah 欄目:編程語言

C#中的堆和棧是什么?相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

                                                           1、什么是堆?

    堆是一塊內(nèi)存區(qū)域,在堆里可以分配大塊的內(nèi)存用于存儲某類型的數(shù)據(jù)對象;

  堆的特征:

    1、堆里面的內(nèi)存能夠以任意順序存入和移除;

    2、不能顯示地刪除程序在堆里面保存的數(shù)據(jù);

    3、靠CLR的自動GC(垃圾收集器)判斷并自動清除無主的堆對象,然后釋放它;

    4、被釋放對象的內(nèi)存可以被重用;

2、什么是棧?

    棧是一個內(nèi)存數(shù)組,是一個后進先出的數(shù)據(jù)結(jié)構(gòu);

  幾種數(shù)據(jù)類型:

    1、某些類型變量的值;

    2、程序當前的執(zhí)行環(huán)境;

    3、傳遞給方法的參數(shù);

  幾個普遍特征:

    1、數(shù)據(jù)只能從棧的頂端插入和刪除;

    2、把數(shù)據(jù)放到棧頂成為入棧;

    3、從棧頂刪除數(shù)據(jù)成為出棧;

3、棧和堆什么區(qū)別?

    1、存放的數(shù)據(jù)類型不同;

    2、棧只能從頂端插入和刪除,堆能夠以任意順序存入和移除;

    3、棧內(nèi)存無需管理,也不受GC管理。當棧頂元素使用完畢,立馬釋放。而堆則需要GC(Garbage collection:垃圾收集器)清理;

    4、棧由系統(tǒng)自動分配,速度較快。但是無法控制。堆則是那些由new分配的內(nèi)存塊,他們的釋放編譯器不去管,由我們的應用程序去控制,一般速度比較慢,而且容易產(chǎn)生內(nèi)存碎片.

看完上述內(nèi)容,你們掌握C#中的堆和棧是什么的方法了嗎?如果還想學到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI