salut,
J'ai un soucis avec free(), si j'allou deux blocs mémoires avec malloc() et que j'essais de libérer l'espace avec free() seul mon premier free est correctement effectué. L'autre se vide mais me laisse des caracteres spéciaux.
exemple avec ce code:
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 #include <stdio.h> #include <stdlib.h> int main(int argv, char *argc[]) { char *chaine1=NULL, *chaine2=NULL; int longueur=10, i=0, count=0; while(count!=longueur) { chaine1=malloc(longueur * sizeof(*chaine1)); //je créer deux tableaux(sans vérifier le retour c'est pour l'exemple) chaine2=malloc(longueur * sizeof(*chaine2)); for(i=0; i!=longueur; i++) { chaine1[i]='*', chaine2[i]='a'; // on rempli le premier avec *** et le deuxieme avec aaaa } puts(chaine1); //on affiche puts(chaine2); free(chaine1); // libération de l'espace free(chaine2); puts(chaine1); //on affiche encore pour verifier puts(chaine2); count++; //la boucle permet de mettre en evidence le fénomene. } return 0; }
Partager