Welcome

首页 / 软件开发 / .NET编程技术 / 浅析值类型与引用类型的内存分配

浅析值类型与引用类型的内存分配2012-03-27 MSDN 林立大家都知道要学好 .NET,深入了解值类型和引用类型是必不可少的。在这里我给大家简单分析一下它们内存分配的区别和联系。

在分析之前,我们先行构造出一个最简单的类引用类型:

public class MyClass
{
}

局部变量的声明

在我们使用类型时,代码里面必然少不了变量的声明,我们先看一下方法内的局部变量的声明,请看如下代码:

private static void Main()
{
int i;
MyClass mc;
i = 5;
mc = new MyClass();
}

当一个局部变量声明之后,就会在栈的内存中分配一块内存给这个变量,至于这块内存多大,里面存放什么东西,就要看这个变量是值类型还是引用类型了。

l 值类型

如果是值类型,为变量分配这块内存的大小就是值类型定义的大小,存放值类型自身的值(内容)。比如,对于上面的整型变量 i,这块内存的大小就是 4个字节(一个 int型定义的大小),如果执行 i = 5;这行代码,则这块内存的内容就是 5(如图 -1)。

对于任何值类型,无论是读取还是写入操作,可以一步到位,因为值类型变量本身所占的内存就存放着值。