C#内存分配

  1. 内存分为两种数据结构:堆(Heap)和栈(Stack)。
    1. 栈相对较小,堆较大。
    2. 栈存储数据是先进后出。
    3. 栈一般用于存储少量关键信息。堆一般存储大量信息。
  2. 从数组看内存分配
    1. 计算机在执行语句是,永远从赋值符号(=)右边开始执行。
      1. 在堆中,开辟5个连续的内存空间,其中第一个空间有一个内存地址(比如1001)。
      2. 在栈中,存储数组名”Array”,并记下第一个空间的地址(1001)。
      3. 也就是说,栈中的Array只是个地址信息,指向堆中的1001。
  3. 从类的实例化看内存分配​​​​​​​
    1. “=”右边,只要有new关键字,就在堆中分配一块内存区域给Program类,并有个地址(1001)。
    2. 在栈中存储obj对象并指向内存地址1001,也就是Program。
  4. 类的内存分配机制
    1. 运行过程
      1. 分配内存空间。
      2. 建立类的对象名称(映射内存地址)。
      3. 运行构造函数。
      4. “=”左边在栈中,“=”右边在堆中。
    2. 实例化对象时,类的成员变量为“值类型”时,放在堆中(跟着对象),对象中的方法表也是单独在堆中存放,但方法表中的值类型存放在栈中。
    3. 类基本不占用内存,对象占用较多内存。
    4. 首先加载程序集然后加载程序集中所有的类最后找到程序集中的Main方法开始运行。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值