La gestione della memoria per una classe [chiusa]
-
27-09-2019 - |
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
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.