C#的内存组织

栈:非类成员的值类型变量

托管堆:由CLR管理的堆,引用类型变量

非托管堆:与C++同,只能由unsafe代码访问

栈的优势:1.快速,内存已经预分配

              2.连续,总是自上而下顺序使用,不存在碎片

              3.自动回收,调用返回后栈指针回弹

栈的劣势:1.不够大,大变量不宜使用栈

              2.不能长期存在。调用后栈指针必须回弹

堆的优势:1.可以分配尽可能大的空间,理论上大至4G

              2.存在时间长。只要不delete,进程结束前总是存在

堆的劣势:1.慢,需要寻找自由空间并分配(提交物理页)

              2.不连续。总是从足够大的自由空间中寻找位置,从而产生内存碎片

              3.不能自动回收,需要代码显示回收(delete)。

原文地址:https://www.cnblogs.com/xuezhi/p/2803501.html