【发布时间】:2012-01-18 18:06:46
【问题描述】:
当创建 2 个相同类型的对象时,堆栈内存中的句柄是指向堆中的同一个对象还是指向 2 个单独的对象。为了清楚起见,这里是具体问题...
class Q2 {
private static int num = 0;
private String prefix;
public Q2 (String p)
{ prefix = p; }
public String Msg (String str) {
String n;
num++;
n = num.ToString();
return n + " - " + prefix + str;
}
}
使用适当的图表,描述执行完以下所有语句后的内存状态。
Q2 var1, var2;
var1 = new Q2("Question 2");
var2 = new Q2 ("Another view");
以下是我无法决定的答案:
1 个对象:
2 个对象:
【问题讨论】:
-
想想吧。不是静态类,怎么可能两个实例共享同一个内存空间呢?
-
既然如此,num是一个静态字段。那会在记忆中的什么地方?
-
+1,因为这是一个完全有效的问题。
-
静态变量存储在称为“高频堆”的特殊堆中。请在下面查看我的答案。
标签: c# .net memory heap-memory stack-memory