首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 內存管理深度解析(一):棧與堆核心概念、類型分類

     編輯:關於C語言

棧 vs 堆

四大類型分類

特性棧堆
數據結構先進後出 (LIFO)隨機訪問、動態分配
主要內容方法棧幀、局部值類型、引用、返回地址對象實例、數組、字符串、類字段
管理方式CPU 自動、編譯器確定大小GC 自動回收、運行時決定生命周期
分配速度極快(指針移動)快(指針碰撞),但需 GC
大小限制有限(默認 1MB/線程)受限於虛擬內存/GC 堆上限

核心原則

  1. 引用類型總在堆上(對象實例),變量存儲引用(指針)。
  2. 值類型出現在聲明它的地方:局部變量→棧,類字段→堆內聯,靜態字段→靜態區。
  3. 指令不存儲在棧/堆,屬於代碼段。

棧幀演示代碼


int AddFive(int pValue)
{
    int result;          // 棧分配
    result = pValue + 5; // 棧運算
    return result;       // 棧拷貝返回
}

調用時:參數 pValue 入棧 → 執行 → 結果入棧 → 返回 → 棧幀彈出。

系列規劃

  1. 本文:棧/堆概念、類型分類、核心原則。
  2. 值/引用類型賦值語義、GC 基礎。
  3. 棧幀結構、參數傳遞、返回值流程。
  4. 傳參機制(ref/out/大結構體優化)。
  5. 值/引用類型拷貝陷阱與 ICloneable。
  6. ICloneable 深拷貝、字符串特例。
  7. GC 根引用、標記壓縮、終結器隊列。
  8. IDisposable 與 using 模式。
  9. 靜態變量線程安全、單例、總結十大原則。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
分類關鍵字/示例基類存儲位置
值類型int, double, bool, struct, enum, DateTimeSystem.ValueType聲明上下文(棧/堆內聯)
引用類型class, interface, delegate, string, object, 數組System.Object堆
指針unsafe context: int*-棧/堆(由 CLR 管理)
指令IL 代碼、JIT 機器碼-代碼段/動態生成區