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 -
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?
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:
- Free(*ptr) en c
- Word 2013 free download - Télécharger - Traitement de texte
- Zimbra free - Guide
- Free office - Télécharger - Suite bureautique
- Sketchup free - Télécharger - 3D
- Bitdefender free - Télécharger - Antivirus & Antimalwares
4 réponses
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 ;-))).
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 ;-))).
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!!!
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!!!
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 :
Et dans ta fonction suppression, lorsque tu parcours l'arbre mets des free également sur toutes les désallocations.
Cdlt,
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,