Récupération de la mémoire

stephanelin Messages postés 12 Date d'inscription mercredi 3 mars 2004 Statut Membre Dernière intervention 13 décembre 2004 - 14 nov. 2004 à 20:26
bebert37 Messages postés 38 Date d'inscription jeudi 17 juillet 2003 Statut Membre Dernière intervention 16 février 2005 - 16 nov. 2004 à 16:29
Bonsoir,
je voudrai savoir comment est-ce qu'il faut faire pour vérifier qu'on a bien libéré l'espace mémoire alloué a une variable...
Je sais qu'il faut utiliser un free()... mais est-ce possible de glisser un printf("...",sizeof(...)) de ce type pour vérifier la libération de la mémoire allouée ? (le printf devrait renvoyé "0" non ?...)

Merci

Stéphane

3 réponses

cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
14 nov. 2004 à 21:55
Nan pas de printf ("...", sizeof()) car ca te renverra TOUJOURS 4, ce qui correspond a la taille de ton pointeur.
Je ne comprend pas vraiment ce que tu cherches a faire, pourrais tu expliker un peu plus en details ?

++
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
15 nov. 2004 à 18:30
Pour etre sur que tout est alloué, tu peux faire des fonction d'allocation personnalisée. Par exemple, si tu es en Debug, tu ajoute à une varaible globale le nombre d'octets alloués, et à free tu les enleve, et la fin tu dois avoir zero.
Si tu veux juste savoir si free a bien marché, a priori je ne vois pas de raison pour que ca échoue...
0
bebert37 Messages postés 38 Date d'inscription jeudi 17 juillet 2003 Statut Membre Dernière intervention 16 février 2005
16 nov. 2004 à 16:29
t'inquiete pas si free echoue tu le sauras tres vite ===> t'as un gros bug en générale.
maintenant si tu veux vraimant vérifier à ce momment la tu fais :
ptr=(void*)realloc(ptr,0);
if(ptr!=NULL){
// memoire pas désallouer
}else{
// mémoire desalouer
}

car le realloc de 0 est equivalant à un free mais il retourne un pointeur sur la nouvelle zone mémoire à savoir NULL si tout marche bien et si il plante il ne touche pas à l'ancienne zone mémoire donc il te renvois le pointeur d'avant..
voilou

*****
Ce sont les tonneaux vides et les hommes pleins qui font le plus de bruit
:big)
0
Rejoignez-nous