Récupération de la mémoire

Signaler
Messages postés
12
Date d'inscription
mercredi 3 mars 2004
Statut
Membre
Dernière intervention
13 décembre 2004
-
Messages postés
38
Date d'inscription
jeudi 17 juillet 2003
Statut
Membre
Dernière intervention
16 février 2005
-
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

Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
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 ?

++
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
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...
Messages postés
38
Date d'inscription
jeudi 17 juillet 2003
Statut
Membre
Dernière intervention
16 février 2005

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)