类中未初始化的数组会使用内存吗?

时间:2018-07-18 20:52:40

标签: c# .net

如果我有一个未初始化数组的类,那么它将使用多少内存?

示例代码:

public class myClass
{
    int x;
    public objClass[] objArr;
}

public class objClass
{
    int y;
    int z;
}

 myClass m0 = new myClass();
 //vs
 myClass m1 = new myClass();
 m1.objArr = new objClass[0];
 //vs
 myClass m2 = new myClass();
 m2.objArr = new objClass[2];

m0会比m1m2使用更少的内存吗?

2 个答案:

答案 0 :(得分:1)

  

如果我有一个未初始化的数组有多少类   记忆会用吗?

是的。

如果不初始化数组,则将以指向0x0(空)的指针结尾,该指针使用4个字节存储指针。

如果初始化它,则它将使用该数组的4字节指针+空间。

但这确实应该是您最不关心的问题,直到遇到内存消耗问题为止。 .NET将负责Ya的内存管理。

答案 1 :(得分:0)

由于这很可能是在Windows(这是带有请求代码的分页虚拟内存操作系统)下,因此您只需保留虚拟内存。如果您在“任务管理器”中监视过程并启用“提交大小”列,则可以看到预留了多少。

所以

  

如果我有一个未初始化数组的类,那么它将使用多少内存?

它将不使用任何内存,它只会提交指针的大小加上数组的大小,而只会提交,一旦您首次启动i,操作系统就会为您分配此内存。