Gestion de la mémoire pour une classe [fermée]
-
27-09-2019 - |
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
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 .