en principe:
1. Le type de classe du C++ est un type valeur, ce qui signifie que lorsqu'un objet de classe est instancié, la mémoire est allouée sur la pile.
De cette façon, si le type de classe est défini comme ceci
classe A
{
publique:
int je;
Un un;
}
Cela tombera dans une boucle infinie, car lors de l'instanciation d'un objet de A, A doit calculer l'espace mémoire occupé par un tel objet en fonction du type de membre (les données membres sont déterminées en fonction du type et du code du membre). la fonction est stockée dans l'exe. Pour mapper vers la mémoire, utilisez simplement un pointeur pour pointer vers l'adresse mémoire et ajoutez des informations de description de classe, mais sizeof n'affiche pas l'utilisation de la mémoire de cette partie des informations de description lorsque vous rencontrez un objet). a de son propre type, il calcule les données utilisées par a. Espace mémoire, et a est de type A, alors répétez.
Donc en C++
Peut contenir des pointeurs de son propre type (souvent utilisés dans les listes chaînées)
classe A
{
publique:
int je;
Un*pa ;
}
L'espace mémoire occupé par une variable de pointeur est facile à déterminer. Le nombre de mots machine indique la quantité d'espace occupée par la variable de pointeur.
2. Le type de classe en C# est un type référence, qui est essentiellement un pointeur.
Par conséquent, tous les objets de classe en C# eux-mêmes font 4 octets (machine 32 bits) et contiennent une adresse mémoire qui pointe vers l’espace mémoire du tas.
classe A
{
public int je;
public A a;
}
Un objet = nouveau A();
L'objet lui-même occupe 4 octets de mémoire et stocke l'adresse de la mémoire du tas. La taille de cette mémoire est de 8 octets (int 4 octets, a est également quatre octets). Lorsque le membre a est instancié, le contenu de a n'est pas nul. stocke une autre adresse dans la mémoire tas, pointant vers un espace mémoire de 8 octets.
Parce que nous pouvons déterminer la quantité d'espace mémoire qu'occupe un objet de A (4 octets, tous les objets de classe C# occupent 4 octets, dans une machine 32 bits), nous pouvons définir
-