zoukankan      html  css  js  c++  java
  • 装箱与拆箱/复制内存

    1、值类型和引用类型的区别
       任何一个值类型都是线程堆栈上的一块内存,而引用类型则是托管堆上的一块内存,值类型多个变量不能共享一款内存、但引用类型可以多个应用类型对应一个托管堆上的一块内存。
    2、变量的存放位置与值类型、引用类型有关
       在非托管时代,例如:VC++决定变量的存储位置是堆还是栈的是有开发人员。而在托管时代,值类型变量一定存储在线程堆栈上,引用类型一定存储在托管堆上。
    3、装箱《==》拆箱是一种错误的认识
       a、装箱的过程:值类型转换为引用类型时发生装箱,首先在托管堆上分配一块内存,然后将值和其他附件信息复制到托管堆上新分配的内存上。
       b、拆箱过程:引用类型转换为值类型时发生拆箱,只是取出托管堆上的引用类型的值元素,并没有在线程堆栈上分配空间。
       c、拆箱后复制内存:将拆箱后得到的值元素赋给在线程堆栈上的值类型。
       由此可知,装箱和拆箱并不是互逆的过程,‘装箱’应该和‘拆箱/复制内存’是互逆的过程,相对而言,装箱的过程比拆箱的过程要复杂,因为装箱是在托管堆上新开辟了一块内存,而拆箱的过程仅仅是读出托管堆上的引用类型的值元素。
    4、小结
       在下列情况下应尽量使用引用类型的变量(后续完成)。
       
      
  • 相关阅读:
    python中get pass用法
    python中get pass用法
    python中get pass用法
    C#委托的介绍(delegate、Action、Func、predicate)
    数据库查询优化的一些总结
    正则表达式的一些基础语法
    w3school上系统过了一遍Jquery的总结
    JavaScript遍历XML总结
    2013学习总结----JavaScript
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
  • 原文地址:https://www.cnblogs.com/kuailewangzi1212/p/717765.html
Copyright © 2011-2022 走看看