在下面的代码,如何 - 在存储器管理方面 - 是class A分配和释放在.NET(C#)。

class A
{
    public static m1(int x, int y)
    {
        int x, y;
        return x+y;
    }
    int m2(int p, int q)
    { 
        int p, int q;
        return p+q;
    }
    int x=10; 
    int y;
    const int x=10;
    readOnly y=20;

    public int x
    {
        get {y}
        set {y=value}
    }
}

class B
{
    A a=new A();  // what happens when initializing class A;
}

注意:class B的使用可能是任一程序的入口点,或对象实例,但这里的范围是对内存管理和class A实例的分配

有帮助吗?

解决方案

在描述该生产线在创建A的新实例在堆上分配B的单个实例。所以,

B b = new B();

将分配两个对象:一个B与直接呼叫和一个A作为构成B的一部分

行本身并不什么,直到您创建B的一个实例。

A似乎有三个字段其不是参考场,因此它不会在堆上创建新对象,但是A实例的一部分。

这是大致所有这一切在本例中分配的内存。

编辑:

为了更加清楚的目的 - 的引用链路到制品说明栈和堆,和内存分配的考虑: HTTP://www.simple-talk。 COM / DOTNET / .NET框架/ .NET的内存管理-基础/

其他提示

当创建B的一个实例,所述存储器被分配用于1个对象参照类型(“A”)中的一个字段。创建一个的新的实例之后引起的记忆对象分配有两个“INT”字段(“X”,“Y”),并用的类型的一个字段是未知类型。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top