【发布时间】:2019-07-25 01:21:06
【问题描述】:
我只需要简单说明一下对象的内存分配
假设我有以下课程:
public class Test
{
public int a;
public Test(int A)
{
a = A;
}
}
////Main program
Test test1 = new Test(32);
Test test2 = test1;
test2.a = 5;
Print(test1.a.ToString());// output =5
Print(test2.a.ToString());// output =5
我的问题是:
我知道值类型是在堆栈中分配的,而引用类型是在堆中分配的。但是当一个对象被创建并且它有一个值类型字段时,是否会分配该字段?当我创建test1 的副本并将其分配给test2 时,两个对象都指向相同的内存位置,这是否意味着int a 在堆栈中只有一个副本,这就是为什么两个对象具有相同的输出5?。
【问题讨论】:
-
“值类型在堆栈中分配”是不正确的。
标签: c# heap-memory