un pb avec mes realloc.. mais quoi ?

un pb avec mes realloc.. mais quoi ? - C++ - Programmation

Marsh Posté le 21-05-2003 à 22:54:21    

voila je fais ca :  

Code :
  1. char **listeU;
  2. char **liste_undef; 
  3. int nbUndef;
  4. int nbU;
  5. listeU pointe sur des chaines
  6. liste_undef aussi.
  7. nbU : nombre d'elements dans listeU
  8. nbUndef : nombre d'elements dans liste_undef


 
en gros, je veux faire ca :  
pour chauqe element de listeU, je regarde s'ils sont presents dans un tableaux de pointeur (listeT, qui contient nbT elements)
s'il ne sont pas dedans, allors j'ajoute le nom de l'element dans le tableau liste_undef et j'incremente nbUndef de 1.
et donc pour avoir un tableau toujours a la bonne taille, je fais un realloc a chaque fois que je veux ajouter un element ds liste_undef.
 
 
si je fais ca, j'ai une segmentation faults, alors que si j'alloue directement a ce tableau une taille (je suis sur qu'on ne peut pas la depasser)ca marche ss pb..
bizarre non ?
 
 
 

Code :
  1. int i;
  2.   //si je fais ca ca fonctione
  3.   liste_undef = realloc(liste_undef, (nbU+1)*sizeof(char));
  4.  
  5.   for (i=0;i<nbU;i++) {
  6.    
  7.     if  (appartient(listeU[i],listeT,nbT) != 0)  { 
  8.      
  9.       if(nbocc(listeU[i],liste_undef,nbUndef)!=1)
  10. { printf("undefined symbol : %s \n",listeU[i]);
  11. // par contre si je fais ca a la place, j'ai une erreur de segmentation
  12. liste_undef = realloc(liste_undef, (nbUndef+1)* sizeof(char));
  13. liste_undef[nbUndef]= malloc((int) (strlen( listeU[i] )+1)*sizeof(char)) ;
  14. strcpy(liste_undef[nbUndef],listeU[i]);
  15. nbUndef++;
  16. }
  17.     }
  18.   }
  19. }


 

Reply

Marsh Posté le 21-05-2003 à 22:54:21   

Reply

Marsh Posté le 21-05-2003 à 23:13:58    

realloc(liste_undef, (nbU+1)*sizeof(char));
 
est ce que liste_undef a une valeur valide?
(nbU+1)*sizeof(char) ça serait pas de char*?

Reply

Marsh Posté le 21-05-2003 à 23:27:09    

oe bien vu :)
(nbU+1)*sizeof(char*)  
 
 :fou:  
merci bien :)
 
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed