.Net中值类型和引用类型
2021-04-09 18:25
标签:内存 主函数 jce 就是 数值 垃圾回收 log str ack 装箱 就是把“值类型”转换成“引用类型”(Object); 拆箱 就是把“引用类型”转换成“值类型”; 引用类型:基类为Objcet 值类型:均隐式派生自System.ValueType: 值类型:byte,short,int,long,float,double,decimal,char,bool 和 struct 统称为值类型 引用类型:string 和 class统称为引用类型。 说起值类型和引用类型就会说到堆和栈的问题,那什么是堆什么是栈呢?他们之间又有什么区别的呢? https://www.cnblogs.com/lanr/articles/5723920.html 1、堆栈空间分配 栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。 2、堆栈缓存方式 栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放。 堆则是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能被回收)。所以调用这些对象的速度要相对来得低一些。 3、效率比较 栈由系统自动分配,速度较快。但程序员是无法控制的。 堆是由new分配的内存,一般速度比较慢,而且容易产生内存碎片,不过用起来最方便。 4、存储内容 栈: 在函数调用时,在大多数的C编译器中,参数是由右往左入栈的,然后是函数中的局部变量。注意静态变量是不入栈的。 当本次函数调用结束后,局部变量先出栈,然后是参数,最后栈顶指针指向函数的返回地址,也就是主函数中的下一条指令的地址,程序由该点继续运行。 堆:一般是在堆的头部用一个字节存放堆的大小。堆中的具体内容由程序员安排 .Net中值类型和引用类型 标签:内存 主函数 jce 就是 数值 垃圾回收 log str ack 原文地址:https://www.cnblogs.com/gyjjyg/p/12442774.html
下一篇:css3-多列