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

  FORUM HardWare.fr
  Programmation

  [C] Libérer un pointeur...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] Libérer un pointeur...

n°80671
Un4GivN
Posté le 11-12-2001 à 19:33:53  profilanswer
 

typedef
 struct lafile *plafile;
 struct lafile
  {
   plafile avant;
   char nom_fichier[13];
   char size_fichier[20];
   int position;
   plafile suivant;
  };
 
plafile debut, moule, courant, fin, depart;
---------------------------------------------
  if (debut!=NULL)
  {
    while(fin!=debut)
    {
      courant=fin->avant;
      fin->avant->suivant=NULL;
      free(fin);
      fin=courant;
    }
    free(fin);
  }
 
Ma structure est "rempli" et je veux la vider au complet pour libérer ma mémoire. Il me semble que ça ne fonctionne pas dutout. Quelqu'un connait la réponse ?

mood
Publicité
Posté le 11-12-2001 à 19:33:53  profilanswer
 

n°80676
deathsharp
Posté le 11-12-2001 à 19:54:08  profilanswer
 

ta allouer de la mem avec koi?


---------------
What butter and whiskey won't cure, there is no cure for.
n°80683
Un4GivN
Posté le 11-12-2001 à 20:02:41  profilanswer
 

void get_fichiers(char lecteur[])
{
 int cpt3 = 0;
 char grosseur[20];
 struct ffblk fblock;
 position_fichiers_1 = 0;
 while(path_1[cpt3] != '.';)
 {
  cpt3++;
 }
 path_1[cpt3 - 2] = '\0';
 strcat(lecteur, "\\*.*" );
 setcolor(white);
 if (debut!=NULL)
 {
  while(fin!=debut)
  {
   courant=fin->avant;
   fin->avant->suivant=NULL;
   free(fin);
   fin=courant;
  }
  free(fin);
 }
 if(findfirst(lecteur,&fblock,ALL_FILES) != 0 )
 {
 
 }
 else
 {
 // puts("Erreur de lecture !" ); // Pas de fichiers...
 
  moule = malloc(sizeof(struct lafile));
  debut = moule;
  fin = moule;
  moule -> avant = NULL;
  courant = moule;
 
  // Met les donn?es dans une structure ).
  strcpy(moule-> nom_fichier, fblock.ff_name);
  ltoa(fblock.ff_fsize, grosseur, 10);
  strcpy(moule -> size_fichier, grosseur);
  moule -> position = position_fichiers_1;
  position_fichiers_1++;
  moule -> suivant = NULL;
 
  while(findnext(&fblock) == 0)
  {
   moule = malloc(sizeof(struct lafile));
   fin -> suivant = moule;
   moule -> avant = fin;
   moule -> suivant = NULL;
   fin = moule;
   moule -> position = position_fichiers_1;
   position_fichiers_1++;
   strcpy(moule -> nom_fichier, fblock.ff_name);
   ltoa(fblock.ff_fsize, grosseur, 10);
   strcpy(moule -> size_fichier, grosseur);
  }
 }
 depart = debut;
 
}

n°80706
Un4GivN
Posté le 11-12-2001 à 21:02:11  profilanswer
 

euh... dsl tout le monde je crois que javais oublié de mettre :
 
if (debut!=NULL)  
 {  
   while(fin!=debut)  
   {  
     courant=fin->avant;  
     fin->avant->suivant=NULL;  
     fin->avant = NULL;
     free(fin);  
     fin=courant;  
   }  
   free(fin);  
 }  
 
:D

n°80746
benou
Posté le 11-12-2001 à 23:11:18  profilanswer
 

qu'est ce que j'aurais du mal à me remettre au C ...

n°80779
mogi
Posté le 12-12-2001 à 08:01:39  profilanswer
 

Un4GivN a écrit a écrit :

euh... dsl tout le monde je crois que javais oublié de mettre :
 
if (debut!=NULL)  
 {  
   while(fin!=debut)  
   {  
     courant=fin->avant;  
     fin->avant->suivant=NULL;  
     fin->avant = NULL;
     free(fin);  
     fin=courant;  
   }  
   free(fin);  
 }  
 
:D  




 
du moment que tu fais un free sur fin, les valeurs que tu mets dans l'enregistrement n'ont pas grande importance. de plus, comme tu détruis toute ta chaîne, inutile de retirer le chaînage avant (enfin, je veux dire le champ suivant de ton élément d'avant ;) ). le conseil de tonton mogi, ce matin :
 
if (debut!=NULL)  
 {  
   while(fin!=debut)  
   {  
     courant=fin->avant;  
     free(fin);  
     fin=courant;  
   }  
   free(fin);  
 }  
 
ça, c'est du tout bon, tu peux y aller, l'erreur est ailleurs... par exemple, je ne vois pas l'initialisation de debut dans ton code (ni la déclaration, tiens, c'est une variable globale ? t'as bien dû l'initialiser qque part, hein ?) sinon, à part la petite taille de tes noms de fichiers, je vois pas d'erreurs ???
 
Mogi.


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

  [C] Libérer un pointeur...

 

Sujets relatifs
[C/C++] Pointeur sur tableauSoft pour libérer un dll utilisée
[C] Libérer la mémoire avec delete[C++] Récupérer un pointeur sur un menu item
[C++] Comment détuire un élément dont on a le pointeur?[C++] type pointeur de fonction
[C++] Comment associer un pointeur à vector<bool>?petit pointeur deviendra grand !!!!!!!!!
[ c++ ] pointeur sur fonction[VB] pointeur souris et interpolation
Plus de sujets relatifs à : [C] Libérer un pointeur...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR