包含无对象的类实例是否创建堆条目

时间:2014-06-18 08:10:05

标签: c# stack heap

如果一个类的新实例不包含任何对象,它是否会创建一个堆条目(其中没有任何内容)或只是一个没有引用/指向堆上位置的堆栈条目?空类的新实例是否使用任何堆内存?例如:

class MyClass
{
}
class Program
{
     Static void Main(string [] args)
     {
            MyClass mc = new MyClass();
     }
}

2 个答案:

答案 0 :(得分:0)

是的,这会在堆上创建一个对象。堆栈上会有一个引用(除非它被优化掉,因为没有使用引用)。

即使该类具有零非静态字段,对象实例也将包含一些标头/元数据。

另外,简单的表达式语句

{
    new object();
}

在堆上创建一个对象,即使您不使用它的引用。

答案 1 :(得分:0)

无法在堆栈上分配对象,因为对象的生命周期可能会持续超出实例化它的函数的末尾。将在堆上创建对象实例。