类的内存管理

发布于 2024-09-30 03:34:04 字数 576 浏览 8 评论 0原文

在以下代码中,就内存管理而言,如何在 .NET (C#) 中分配和释放A 类

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;
}

注意:B 类 的使用可以是程序的入口点,也可以是对象实例,但这里的范围是A 类实例的内存管理和分配。 /代码>。

in the following code, How - in terms of memory management - is class A allocated and deallocated in .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;
}

Note: that the usage of class B could be either the entry point of the program, or an object instance, but the scope here is on memory management and allocation of the instance of class A.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

情何以堪。 2024-10-07 03:34:04

当您创建 B 的新实例时,您描述的行会在堆上分配 A 的单个实例。因此,

B b = new B();

将分配两个对象:一个用于直接调用的 B 和一个作为构造 B 的一部分的 A

在您创建 B 实例之前,该行本身不执行任何操作

A 似乎有三个不是引用字段的字段,因此它不会在堆上创建新对象,而是 A 实例的一部分。

这大致就是本示例中分配的所有内存。

编辑:

为了更清楚起见 - 解释堆栈和堆以及内存分配注意事项的文章的参考链接:
http://www.simple-talk。 com/dotnet/.net-framework/.net-内存管理-basics/

The line you describes allocates a single instance of A on the heap when you create a new instance of B. So,

B b = new B();

will allocate two objects: one B with the direct call and one A as part of constructing the B.

The line itself does nothing until you create an instance of B.

A seems to have three fields which are not reference fields, so it does not create new objects on the heap but are part of the A instance.

That's roughly all the memory that's allocated in this example.

EDIT:

For purposes of greater clarity - A reference link to an article explaining Stack and Heap, and Memory Allocation considerations:
http://www.simple-talk.com/dotnet/.net-framework/.net-memory-management-basics/

羁拥 2024-10-07 03:34:04

当您创建 B 的实例时,内存将分配给具有一个引用类型(“A”)字段的 1 个对象。在创建 A 的新实例之后,这会导致为具有两个“int”字段(“x”、“y”)和一个 TYPE IS UNKNOWN 类型字段的对象分配内存。

When you create an instance of B, the memory is allocated for 1 object with one field of reference type ("A"). Right after that new instance of A is created which causes allocation of memory for object with two "int" fields ("x", "y") and with one field of TYPE IS UNKNOWN type.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文