Bonjour
Voilà fort longtemps que je n'ai plus fait de C. Donc, veuillez d'ores et déjà excuser la naïveté sans doute de la question.
Voici mon problème, je veux lire un fichier et stocker une (grosse) partie de son contenu en mémoire. Je précise que c'est un fichier texte :
Or, à l'exécution de mon code, je reçois l'erreur suivante :
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
29
30
31
32
33
34
35
36
37
38
39
40 #include <stdio.h> #include <stdlib.h> #include <string.h> void setSequence(char *filename){ int SIZE = 512; char ligne[SIZE]; char *Sequence = (char *)malloc(SIZE*sizeof(char)); if(Sequence==NULL){ fprintf(stderr, "Memory allocation error !\n"); exit(2); } FILE *file = fopen(filename, "r"); if(file==NULL){ fprintf(stderr, "Can not access to %s\n", filename); exit(3); } while(fgets(ligne, sizeof ligne, file)){ if(ligne[0] != '>') { strcat(Sequence, ligne); char *tmp = (char *)malloc(SIZE*sizeof(char)); if(tmp==NULL){ fprintf(stderr, "Memory allocation error !\n"); exit(2); } SIZE*=2; tmp = Sequence; Sequence = (char *)realloc(Sequence, SIZE*sizeof(char)); if(Sequence==NULL){ fprintf(stderr, "Memory allocation error !\n"); exit(2); } Sequence = tmp; free(tmp); } } printf("%s\n", Sequence); }
Bon, apparemment, il y a un stress dans mes allocations mémoires. Quelle peut bien être mon erreur ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 *** glibc detected *** double free or corruption (!prev): 0x0804a008 *** Abandon
Merci d'avance de vos réponses.
@++
Partager