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...
BruNews
Messages postés21041Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 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.