一类存储器管理(闭合)
-
27-09-2019 - |
题
在下面的代码,如何 - 在存储器管理方面 - 是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”),并用的类型的一个字段是未知强>类型。
不隶属于 StackOverflow