Free(*ptr) en c

Résolu
Scoleproj Messages postés 231 Date d'inscription   Statut Membre Dernière intervention   -  
Scoleproj Messages postés 231 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
je voudrais savoir s'il existe une fonction en c pour tester si une zone memoire est alloué ou pas?
J'ai fais un programme pour supprimer un arbre,et apres je veux tester dans une autre fonction si cet arbre est vide avant de faire le traitement sur l'arbre.
Le probleme est qu'apres avoir supprimer les noeuds de l'abre,l'abre devient pas null mais pointe sur une zone mémoire aléatoire,d'ou la question comment faire le test pour savoir si la zone mémoire est désallouée?



A voir également:

4 réponses

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Bonjour,

Non, il n'y a pas de fonction.
Et il n'y en a pas besoin.
Le probleme est qu'apres avoir supprimer les noeuds de l'abre,l'abre devient pas null mais pointe sur une zone mémoire aléatoire
C'est vrai, c'est pour ça qu'il est conseillé de mettre soi-même l'arbre à NULL.
Ainsi, il n'y a plus de problèmes ;-))).
0
Scoleproj Messages postés 231 Date d'inscription   Statut Membre Dernière intervention   26
 
Merci pour ta reponse,le truc est que je supprimais l'arbre de manière récursif et donc en faisant arbre=NULL l'algo s'arrete sans supprimer tous les noeuds.
Bon pour remédier a ca,j'ai fais une autre fonction qui appelait supprimer_arbre,puis a la sortie de ce programme je fais pointer arbre sur NULL,et pour l'instant ca marche.
Thx fiddy!!!
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Bon pour remédier a ca,j'ai fais une autre fonction qui appelait supprimer_arbre,puis a la sortie de ce programme je fais pointer arbre sur NULL,et pour l'instant ca marche.
Oui, bien sûr, c'est comme ça qu'il faut faire ;-))).
D'une manière générale, dès que tu fais un free, initialise ta variable à NULL.
Par exemple dans ton cas :
suppression(arbre);
arbre=NULL;

Et dans ta fonction suppression, lorsque tu parcours l'arbre mets des free également sur toutes les désallocations.

Cdlt,
0
Scoleproj Messages postés 231 Date d'inscription   Statut Membre Dernière intervention   26
 
Yep ok,c'est ce que j'ai fais :)
Merci a toi daddy fiddy ^^
0