程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C# 認識"棧"和"堆",

C# 認識"棧"和"堆",

編輯:C#入門知識

C# 認識"棧"和"堆",


1、什麼是棧?

    棧是一個內存數組,是一個後進先出的數據結構;

  幾種數據類型:

    1、某些類型變量的值;

    2、程序當前的執行環境;

    3、傳遞給方法的參數;

  幾個普遍特征:

    1、數據只能從棧的頂端插入和刪除;

    2、把數據放到棧頂成為入棧;

    3、從棧頂刪除數據成為出棧;

2、什麼是堆?

    堆是一塊內存區域,在堆裡可以分配大塊的內存用於存儲某類型的數據對象;

  堆的特征:

    1、堆裡面的內存能夠以任意順序存入和移除;

    2、不能顯示地刪除程序在堆裡面保存的數據;

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

    4、被釋放對象的內存可以被重用;

3、棧和堆什麼區別?

    1、存放的數據類型不同;

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

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

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

4、其實用不著深入追究什麼是“堆”和“棧”,他們都是一塊內存,又都是用來儲存數據的。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved