Fuite de mémoire ou pas ?
blasterk
Messages postés
8
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
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
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:
- Fuite de mémoire ou pas ?
- Fuite données maif - Guide
- Mémoire vive - Guide
- RAM : type, format, CAS, vitesse, tout sur la mémoire vive - Guide
- Nettoyer memoire iphone - Guide
- C'est un secret bien gardé : ce réglage d'expert peut doper les performances de votre PC - Guide
1 réponse
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.
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.