Domanda

nel codice seguente, come - in termini di gestione della memoria - è class A assegnati e deallocata 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;
}

Nota: che l'uso di class B potrebbe essere sia il punto di ingresso del programma o un'istanza oggetto, ma l'ambito ecco sulla gestione della memoria e assegnazione dell'istanza di class A

.
È stato utile?

Soluzione

La linea si descrive assegna una singola istanza di A nel mucchio quando si crea una nuova istanza di B. Così,

B b = new B();

assegnerà due oggetti:. Uno B con la chiamata diretta e una A come parte della costruzione del B

La linea stessa ha non fino a quando si crea un'istanza di B.

A sembra avere tre campi che non sono campi di riferimento, in modo da non creare nuovi oggetti sul mucchio, ma fanno parte dell'istanza A.

Questo è più o meno tutta la memoria che è allocata in questo esempio.

EDIT:

Ai fini di una maggiore chiarezza - link di riferimento A per un articolo che spiega stack e heap, e le considerazioni di allocazione di memoria: http: //www.simple-talk. com / dotnet / .NET-framework / .NET-memory-management-basics /

Altri suggerimenti

Quando si crea un'istanza di B, la memoria viene allocata per 1 oggetto con un campo di tipo di riferimento ( "A"). Subito dopo nuova istanza di A viene creata che provoca l'allocazione di memoria per oggetto con due campi "INT" ( "x", "y") e con un campo di TIPO è sconosciuto tipo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top