Allocation mémoire

Résolu
Signaler
Messages postés
101
Date d'inscription
dimanche 1 avril 2001
Statut
Membre
Dernière intervention
18 février 2008
-
Messages postés
101
Date d'inscription
dimanche 1 avril 2001
Statut
Membre
Dernière intervention
18 février 2008
-
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

Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
10
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".
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
41
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.
Messages postés
101
Date d'inscription
dimanche 1 avril 2001
Statut
Membre
Dernière intervention
18 février 2008

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