| 特性 | 棧 | 堆 | |
|---|---|---|---|
| 數據結構 | 先進後出 (LIFO) | 隨機訪問、動態分配 | |
| 主要內容 | 方法棧幀、局部值類型、引用、返回地址 | 對象實例、數組、字符串、類字段 | |
| 管理方式 | CPU 自動、編譯器確定大小 | GC 自動回收、運行時決定生命周期 | |
| 分配速度 | 極快(指針移動) | 快(指針碰撞),但需 GC | |
| 大小限制 | 有限(默認 1MB/線程) | 受限於虛擬內存/GC 堆上限 |
| 分類 | 關鍵字/示例 | 基類 | 存儲位置 |
|---|---|---|---|
| 值類型 | int, double, bool, struct, enum, DateTime | System.ValueType | 聲明上下文(棧/堆內聯) |
| 引用類型 | class, interface, delegate, string, object, 數組 | System.Object | 堆 |
| 指針 | unsafe context: int* | - | 棧/堆(由 CLR 管理) |
| 指令 | IL 代碼、JIT 機器碼 | - | 代碼段/動態生成區 |