Allocation mémoire

Résolu
cs_sephiro Messages postés 101 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 18 février 2008 - 26 janv. 2007 à 17:04
cs_sephiro Messages postés 101 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 18 février 2008 - 27 janv. 2007 à 08:11
Je débute en C# et je travaille surtout en C++
En C# pas besoin de libérer la mémoire OK, mais si je passe en parametre à une fonction un pointeur sur un tableau de byte initialisé à Null, j'alloue de la mémoire dans la fonction est ce que le run time ne va pas me libérer la mémoire en sortie de fonction ? J'ai fais quelques tests a premiere vue non, mais je voudrais etre sur.
exemple de ce que j'ai fais:
main
{
Byte[] Tableau=null;
MaFonction(ref Tableau);
}

MaFonction(ref Byte[] Tab)
{
   Tab=new Byte[500];
 return;
}

//  Ma memoire sera t elle libérée en fin de fonction MaFonction   ou fin de fonction Main ?
// Le Runtime libere la mémoire lorqu'il a le temps ou si nécessaire donc mes tests n'ont peut etre pas validé ma question.

Sephiro

3 réponses

Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
26 janv. 2007 à 17:16
Tant que ta mémoire sera référencée, elle ne sera pas libérée. Autrement dit, si ta variable Tableau est la seule à pointer sur ce bloc, la durée de vie du bloc sera la même que celle de 'Tableau".
3
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
27 janv. 2007 à 02:13
Salut, il faut abandonner tes reflexes C++  inutile de passer le tableau avec "ref" les tableaux sont déja des références, là tu passe une sorte de "référence sur référence". Nikoui à déja répondu et effectivement le tableau ne sera pas libéré avant la fin de Main car tu as toujours une référence valide qui pointe sur la zone mémoire du tableau.
0
cs_sephiro Messages postés 101 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 18 février 2008
27 janv. 2007 à 08:11
Merci Nikoui
Je risque de garder mes reflexes C++ pendant un moment, la difficulté dans ce nouveau language c'est le manque de pointeur, je ne sais pas par qu'elle bout je dois attraper les object !!!
Sephiro
0
Rejoignez-nous