Question

dans le code suivant, comment - en termes de gestion de la mémoire - est class A affecter et de désaffecter dans .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: que l'utilisation de class B pourrait être le point d'entrée du programme, ou une instance d'objet, mais la portée est ici sur la gestion de la mémoire et de l'allocation de l'instance de class A

.
Était-ce utile?

La solution

La ligne vous décrit alloue une seule instance de A sur le tas lorsque vous créez une nouvelle instance de B. Ainsi,

B b = new B();

attribuera deux objets:. Un B avec l'appel direct et un A dans le cadre de la construction du B

La ligne elle-même ne fait rien jusqu'à ce que vous créez une instance de B.

A semble avoir trois champs qui ne sont pas des champs de référence, il ne crée pas de nouveaux objets sur le tas, mais font partie de l'instance A.

C'est à peu près toute la mémoire qui est allouée dans cet exemple.

EDIT:

Pour plus de clarté - Un lien de référence à un article expliquant la pile et Heap, et les considérations d'allocation mémoire: http: //www.simple-talk. com / dotnet / .net-cadre / .net-mémoire-gestion-base /

Autres conseils

Lors de la création d'une instance de B, la mémoire est allouée pour 1 objet avec un champ de type de référence ( « A »). Juste après cette nouvelle instance de A est créé qui provoque l'allocation de mémoire pour objet avec deux champs « int » ( « x », « y ») et avec un champ de type est UNKNOWN de type .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top