详解类型、变量与对象
一、类型在C#语言中的作用,一个C#类型中所包含的信息有:
-
存储此类型变量所需的内存空间大小
-
此类型的值可表示的最大、最小值范围
-
此类型所包含的成员(如方法、属性、事件等)
-
此类型由何基类派生而来
-
程序运行的时候,此类型的变量在分配在内存的什么位置
1.Stack简介(栈给方法调用来用的)
2.Stack overflow
3.Heap简介(堆用来存储对象的)
4.使用Performance Monitor查看进程的堆内存使用量
5.关于内存泄漏(堆内存泄漏)
二、C#语言的类型系统
-
装箱与拆箱
1.装箱: int x = 100; object obj = x ;
(内存中,先把栈上值类型的值,在堆上找一块可以存储的空间,把数值100放入到堆上。然后在把堆这边的地址放入到栈上的位置里去)
装箱指的是把栈上的值类型的值封装成object类型的实例搁在堆上,称之为装箱
2.拆箱: 与装箱相反,把值从堆内存中拷贝过来(注意不是拷贝地址),然后放入到栈内存的变量中
把堆上面object类型的实例的值按照要求拆成目标数据类型,存储到栈上去,称之为拆箱
三、栈内存分配地址,是由高地址向低地址去分配,直到分配到栈的栈顶之后,没有内存可以分配了,这个时候栈就溢出了