Fuite de mémoire ou pas ?

Fermé
blasterk Messages postés 8 Date d'inscription samedi 27 décembre 2008 Statut Membre Dernière intervention 2 février 2009 - 2 févr. 2009 à 19:26
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 3 févr. 2009 à 00:45
Salut à tous.
J'ai pris l'habitude quand je programme en c++ d'initialiser mes variables hors d'un while ou un if dans ce genre:

bool A0=true;
int WSA_RETURN=0;
while(A0!=false)
{
WSA_RETURN=WSAStartup(MAKEWORD(2,2),&init0);
if(WSA_RETURN==0)
{
...
}
else
{
...
}
}

Car je pense que si j'avais fais ce code:

bool A0=true;
while(A0!=false)
{
int WSA_RETURN=WSAStartup(MAKEWORD(2,2),&init0);
if(WSA_RETURN==0)
{
...
}
else
{
...
}
}
il y aurait une fuite de mémoire car il y a "int WSA_RETURN=WSAStartup....." dans le while. Est ce que c'est vrai ou faux. Ca me pose un problème car je préfère déclarer mes variables en utilisant la fonction directement.
D'avance merci
A voir également:

1 réponse

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 838
3 févr. 2009 à 00:45
Salut,
Il y a fuite de mémoire, si tu oublies de désallouer une zone.
Sinon, le mieux (sous réserve que ça soit possible), est de déclarer sa variable dans le if ou le while. Il y a réduction de sa portée, et elle n'encombrera pas inutilement la pile jusqu'à la fin du programme si elle est juste utilisée dans un bloc.
Par contre, cela n'empêche pas le fait de libérer les zones allouées dans le heap. Et dans certain cas où tu ne pourras pas la libérer dans un if ou un while à cause de l'algorithme, tu devras la mettre dans le corps principal.
0