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;
}