Libération de la mémoire en utilisation GetIfTable

christophelande Messages postés 15 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 26 février 2006 - 22 févr. 2006 à 21:05
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 22 févr. 2006 à 23:22
Salut, j'utilise l'API GetIfTable pour récupérer des infos sur les interfaces réseau de mon PC. J'utilise la même méthode décrite ici :
http://www.cppfrance.com/forum.v2.aspx?id=436977

Le problème, c'est que la mémoire n'est pas totalement libérée! j'ai pourtant bien mis le 'free' à la fin de ma méthode. En effet, la mémoire augmente tout doucement de 4 Ko. Si quelqu'un sait pourquoi...

Merci.

1 réponse

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
22 févr. 2006 à 23:22
Pour sur, il manque qlqs "menus" détails:

buffer = (MIB_IFTABLE*) malloc(sizeof(MIB_IFTABLE));
GetIfTable (buffer, &size, TRUE);
size valait 0 à ce 1er test qui ne sert qu'à obtenir le size requis.
Avant de réallouer faut libérer sinon fuite mémoire:
if(buffer) free(buffer);

faut tester le retour de la fonction:
Si ERROR_INSUFFICIENT_BUFFER ok on alloue la valeur de size.
et now ok on alloue la taille requise:
buffer = (MIB_IFTABLE *) malloc (size);

second appel si retourne != NO_ERROR alors aller direct au free car pas bon.

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
0
Rejoignez-nous