Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide Recherche
726 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Problème de libération (free())

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème de libération (free())

n°2065901
ikseg
Qui vivra verra!
Posté le 24-03-2011 à 19:19:55  profilanswer
 

Salut,
Voila ma structure :  
 
typedef struct _liste {
pid_t pid;
char * cmd;
struct _liste * suivant;
} liste;
 
Je crée une liste
liste *liste_tdf;
 
Pour l'allocation je fais :
liste_tdf = malloc(sizeof(liste));
 
Pour la libération :
free(liste_tdf);
 
Après je fais  
if(liste_tdf) printf("ca marche pas" );
 
Et ca m'imprime "ca marche pas", ce qui n'est pas normal car j'ai libéré...
Vous auriez une idée?

mood
Publicité
Posté le 24-03-2011 à 19:19:55  profilanswer
 

n°2065902
Un Program​meur
Posté le 24-03-2011 à 19:30:04  profilanswer
 

libérer un pointeur ne veut pas dire que les objets contenant la même valeur deviennent nulle par magie.


---------------
The truth is rarely pure and never simple (Oscar Wilde)
n°2065903
ikseg
Qui vivra verra!
Posté le 24-03-2011 à 19:33:35  profilanswer
 

Oui, mais la fonction free n'accepte pas : free(*liste_tdf);

n°2065916
gilou
Modérateur
It's the only NEET thing to do
Posté le 24-03-2011 à 21:08:09  profilanswer
 

if(liste_tdf) printf("ca marche pas" );  
ça teste si liste_tdf est NULL ou pas.
D'après toi, avec ce que tu fais, pourquoi est ce que liste_tdf devrait être mis a NULL?
 
A+,


---------------
I think you guys should really consider virtualizing the whole process and moving it to the cloud.
n°2065939
H3bus
Troll Inside
Posté le 25-03-2011 à 00:49:21  profilanswer
 

Je ne connais pas de moyen de tester si un free() n'a pas planté, a part justement que ton programme ne plante pas.
 
Test une free(NULL) tu verras, ça part dans les choux...


---------------
sheep++
n°2066003
gilou
Modérateur
It's the only NEET thing to do
Posté le 25-03-2011 à 11:35:11  profilanswer
 

H3bus a écrit :

Je ne connais pas de moyen de tester si un free() n'a pas planté, a part justement que ton programme ne plante pas.

 

Test une free(NULL) tu verras, ça part dans les choux...

Un programme n'a pas a se préoccuper si free a merdé ou non a priori:
S'il a pas merdé, OK, et s'il a merdé, la mémoire n'est pas désallouée, donc on l'utilisera plus pour autre chose vu qu'elle est pas vue comme libre.
Au pire ça impacte la mémoire libre dispo pour le programme, mais ça a peu de chances de le faire planter (sauf comportement répétitif, et disparition rapide de la mémoire libre dispo).
A+,


Message édité par gilou le 25-03-2011 à 11:35:44

---------------
I think you guys should really consider virtualizing the whole process and moving it to the cloud.
n°2066042
olivthill
Posté le 25-03-2011 à 13:09:35  profilanswer
 

Je plussoie, et cela d'autant plus que j'ai déjà eu ce problème à débugguer sur un programme écrit par quelqu'un d'autre.
 
Au lieu d'écrire :

free(toto);


 
Toujours écrire :

free(toto);
toto = NULL;

n°2066048
gilou
Modérateur
It's the only NEET thing to do
Posté le 25-03-2011 à 13:23:21  profilanswer
 

Ça, je l'avais pas mis explicitement, afin qu'il le devine avec un peu de réflexion.
A+,


---------------
I think you guys should really consider virtualizing the whole process and moving it to the cloud.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Problème de libération (free())

 

Sujets relatifs
Vba: Excel >Word , Probleme de decimalesProbleme bioinfo melant l'informatique
Problème Validation XML - Ordre AléatoireProblème avec la fonction setrlimit
problème de liaison d'un objet distantOù ce peut etre le problème ?
Problème Regexprobleme xampp erreur 404
[perl] Probleme double lecture[resolu] problème d'injection SQL, doctrine orm
Plus de sujets relatifs à : Problème de libération (free())


Hit-Parade
Copyright © 1997-2012 Hardware.fr SARL / Groupe LDLC / LesNumeriques.com / Version anglaise du site: BeHardware