堆的工作原理和如何为引用数据类型分配内存?

1 view
Skip to first unread message

yru...@gmail.com

unread,
Sep 7, 2006, 2:32:09 AM9/7/06
to 《c#高级编程》第三版
/code begin/

void DoWork()
{
Customer arabel;
arabel = new Customer();
Customer mrJones = new Nevermore60Customer();
}

/code end/

在这段代码中,假定存在两个类Customer和Nevermor60Customer。

首先,声明一个Customer引用,该引用名为arabel,在堆栈上给这个引用分配存储空间,但这仅是一个引用,而不是实际的Customer对象。arabel引用占用4个字节的空间,包含了存储Customer对象的地址(需要4个字节把0到4GB之间的地址存储为一个整数值)。

然后看下一行代码:

arabel = new Customer();

这行代码完成了以下操作:首先,分配堆上的内存,以存储Customer实例(一个真正的实例,不只是一个地址)。然后把变量arabel的值设置为分配给新Customer对象的内存地址(它还调用合适的Customer()构造函数初始化类实例中的字段,但我们不必担心这部分)。

Reply all
Reply to author
Forward
0 new messages