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 :
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 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; }
Merci pour votre aide!
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; }
Partager