LordOfTheShadow
Messages postés174Date d'inscriptionvendredi 22 décembre 2000StatutMembreDernière intervention 9 septembre 2010
-
27 mai 2009 à 09:32
LordOfTheShadow
Messages postés174Date d'inscriptionvendredi 22 décembre 2000StatutMembreDernière intervention 9 septembre 2010
-
27 mai 2009 à 11:44
Bonjour!
Je voudrai savoir si j'alloue de la mémoire aux céllules d'un tableau dont la valeur est null. Voir l'exemple ci-dessous. Et puis comment vider la mémoire des céllules instanciées(les objets du tableau sur lesquels j'ai fait un new...).
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201549 27 mai 2009 à 10:13
Salut
Je suis pas certain d'avoir bien compris ta première question.
Je te fais tout de même quelques rappels sur les tableaux :
Déjà, tout dépend du type de variables contenues dans le tableau
Par valeur (int, char...)
Le tableau alloue de la mémoire pour n variables (n étant la taille du tableau). Toutes ces variables sont initialisées à 0, et peuvent être directement utilisées :
int[] tab = new int[1];
int val = tab[0] + 5;
Par référence (Presque tous les types non primitifs, classes persos...)
La tableau alloue de la mémoire pour n références (pas pour les objets). Toutes ces références sont initialisées à null. Il faut forcément faire des new pour les utiliser :
object[] tab = new object[1];
string val = tab[0].ToString(); // NullReferenceException
tab[0] = new object();
string val = tab[0].ToString(); // Fonctionne
En ce qui concerne la mémoire, ce n'est pas toi qui la gère en C#, mais le Garbage Collector (GC). Pour simplifier, quand ton programme ne peut plus accéder à un objet (car cet objet n'a plus de référence), le GC se chargera de libérer la mémoire (cependant, tu ne sais pas trop quand). Il n'existe pas de "delete", de "free" ou d'équivalent en C#.
object o = new object(); // Allocation de mémoire
o = null; // Plus de référence sur l'objet créé, donc il sera supprimé automatiquement.