C#中的堆和栈理解
引言:程序運行時,它的數(shù)據(jù)必須存在內(nèi)存中,一個數(shù)據(jù)需要多大內(nèi)存、存儲在什么地方以及如何存儲都依賴于該數(shù)據(jù)的數(shù)據(jù)類型。
1、什么是棧
棧是一個內(nèi)存數(shù)組,是一個LIFO(Last-In-First-Out 后進先出)的數(shù)據(jù)結(jié)構(gòu)。
棧主要存儲如下幾種數(shù)據(jù):
a、某些類型變量的值。
b、程序當前的執(zhí)行環(huán)境。
c、傳遞給方法的參數(shù)
棧的特征:
1、數(shù)據(jù)只能從棧的頂端插入和刪除
2、把數(shù)據(jù)放到棧頂稱為入棧(push)
3、從棧頂刪除數(shù)據(jù)稱為出棧(pop)
什么叫堆?
堆是一塊內(nèi)存區(qū)域,在堆里面可以分配較大塊的內(nèi)存用來存儲某種數(shù)據(jù)類型的數(shù)據(jù)對象,和棧不同是的,堆里面的內(nèi)存可以按照任何順序進行存入和移除。
注意:雖然程序可以在堆里面保存數(shù)據(jù),但是不能顯式的刪除它們。CLR的GC(垃圾收集器)在判斷出程序的代碼將不會再訪問某數(shù)據(jù)項的時候,會自動清楚無主的堆對象(托管對象)。
總結(jié)
- 上一篇: web app小程序各种客服窗口插件
- 下一篇: c# char unsigned_dll