Bonjour,
Dans un programme, la fonctionne realloc plante si je demande de réallouer a partir d'une certaine valeur, il doit y avoir probablement un free a faire mais je ne vois pas ou.

voici ma fonction pour réallouer une chaine de taille cpt_chaine à une nouvelle taille de la valeur indice :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
int reallocation_chaine(char **chaine, int *cpt_chaine, int indice){
  char *temp;
  *cpt_chaine=indice;
  temp=realloc(*chaine,*cpt_chaine);
  if(temp!=NULL)
    *chaine=temp;
  else
    return-1;
  return 0;
}
cette fonction est utilisé dans un fonction qui parcourt un fichier afin de créer une chaine :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
 
int creer_chaine(char **chaine,int *cpt_chaine,FILE *fichier, char *caractere, char fin){
 
  char *temp=*chaine;
  FILE *file=fichier;
  int cpt_c=*cpt_chaine;
 
  int cpt=0;
  while(*caractere!=fin && *caractere!=EOF){
    printf(" %d tour\n",cpt);
    if(cpt+2>cpt_c){
      if(reallocation_chaine(&temp,&cpt_c,cpt_c*2)==-1){
	return -1;	
	}
    }
    temp[cpt]=*caractere;
    *caractere=fgetc(file);
    cpt++;
  }
  *cpt_chaine=cpt+1;
  if(reallocation_chaine(&temp,&cpt,cpt+1)==-1)
    return -1;
  temp[cpt-1]='\0'; 
  *chaine=temp;
  *caractere=fgetc(file);
  return 0;
}
Merci pour votre aide!