Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1691 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [C] Free...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] Free...

n°704302
ben33
Posté le 20-04-2004 à 22:11:21  profilanswer
 

J'ai une erreur sur cette chose...
quelqu'un peut il m'en dire +?  
(compilé et exécuté sous VC++6)
 
void free_attribut(test)
attribut * test;
{
int i;
 
i=0;
 
free(test);

mood
Publicité
Posté le 20-04-2004 à 22:11:21  profilanswer
 

n°704305
skelter
Posté le 20-04-2004 à 22:15:13  profilanswer
 

void free_attribut(attribut * test)  
{
}
 
c'est depassé les declaration de parametres comme ca

n°704311
ben33
Posté le 20-04-2004 à 22:28:05  profilanswer
 

c pas le plus dramatique..
lol

n°704340
skelter
Posté le 20-04-2004 à 22:54:15  profilanswer
 

tu le sort d'ou ce fameux code que tu recupere :d

n°704487
christophe​_d13
L'efficacité à tout prix.
Posté le 21-04-2004 à 01:00:17  profilanswer
 

Ah mon avis c'est des sources de l'ansi ou d'un projet genre mpeg/jpeg...

n°704514
matafan
Posté le 21-04-2004 à 05:09:41  profilanswer
 

Ton code il montre pas ce qui est important : ce qu'il y a entre la création de l'attribut et l'appel à free_attribut. Si ça plante dans free(), c'est surement que tu passes un pointeur vers une zone qui a déja été libérée, ou qui n'a pas été allouée par malloc.


Message édité par matafan le 21-04-2004 à 05:10:24
n°704847
ben33
Posté le 21-04-2004 à 12:36:55  profilanswer
 

Je le sors d'une reprise d'un logiciel de ma boite...
 

n°704849
ben33
Posté le 21-04-2004 à 12:38:50  profilanswer
 

Déjà été libéré... ca se peut..  
Une question de novice..
si j'ai ca :  
toto *a; (toto est une structure)
a = malloc(..);
a->b=malloc(..);
....
dois je faire  
free (a->b);
free(a);
 
ou est ce que free (a) suffit??
Merci beaucoup

n°704852
djdie
L'heure, c'est l'heure.
Posté le 21-04-2004 à 12:40:21  profilanswer
 

non il faut les libérer les deux

n°704857
ben33
Posté le 21-04-2004 à 12:45:17  profilanswer
 

c bien ce qu'il me semblait...
L'ordre importe t il?
Merci!

mood
Publicité
Posté le 21-04-2004 à 12:45:17  profilanswer
 

n°704859
djdie
L'heure, c'est l'heure.
Posté le 21-04-2004 à 12:49:32  profilanswer
 

L'ordre n'importe pas, mais par contre dès que tu as fait free(a) *tu ne dois plus* tenter d'accéder à a->b !
 
Donc l'ordre logique est celui que tu as montré, mais si tu as copié a->b quelque part d'autre (disons c) rien ne t'interdit de libérer d'abord a puis de libérer c.

n°704863
ben33
Posté le 21-04-2004 à 13:01:02  profilanswer
 

merci

n°705399
skelter
Posté le 21-04-2004 à 20:04:56  profilanswer
 

soit tes pointeurs pointent sur une zone allouée soit ils sont a NULL

n°705600
matafan
Posté le 22-04-2004 à 07:16:01  profilanswer
 

Bien sûr que si l'ordre est important. Si tu commences par libérer a, alors quand tu tentes de libérer a->b tu accède à une zone qui a déja été libérée. Si tu fais le free(a->b) juste après le free(a) alors tu as toutes les chances que ça passe quand même, mais c'est absolument incorrecte sur le principe, et si ça coredump c'est absolument normal.


Message édité par matafan le 22-04-2004 à 07:18:01
n°705609
ben33
Posté le 22-04-2004 à 08:11:28  profilanswer
 

De toutes les facons, les deux libérations doivent etre faites...si je résume bien tout ce que vous me dites...
C'est ce que je pensais..
 
Merci!

n°705616
jagstang
Pa Capona ಠ_ಠ
Posté le 22-04-2004 à 08:28:16  profilanswer
 

djdie a écrit :

L'ordre n'importe pas, mais par contre dès que tu as fait free(a) *tu ne dois plus* tenter d'accéder à a->b !


donc l'ordre importe

n°705680
djdie
L'heure, c'est l'heure.
Posté le 22-04-2004 à 09:58:51  profilanswer
 

JagStang a écrit :

donc l'ordre importe

Ben mon post était clair il me semble. L'ordre de libération des deux zones mémoires n'importe pas du tout, pour autant que l'appel à free se fasse en donnant un pointeur valide, ce qui n'est pas le cas de a->b après libération de a.
 
Dire que l'ordre importe donne l'impression que les appels à free doivent obligatoirement être faits dans le sens inverses des appels à malloc, ce qui est faux.

n°705784
jagstang
Pa Capona ಠ_ಠ
Posté le 22-04-2004 à 11:34:58  profilanswer
 

c'est ce que je dis oui


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

  [C] Free...

 

Sujets relatifs
pb free et session_start[FREE/PHP] Upload de fichiers possible ou non ?
Configuration serveur d'application de Dreamweaver avec FREEInsert mysql sous free
Session et FreeQuel vérificateur de code genre lint ( free)
malloc, free et structuresPhp - et decompression de fichier ... (Free)
Pblm avec fetch_row et free_resultle langage ASP et l'hebergeur FREE
Plus de sujets relatifs à : [C] Free...


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)