Comportement d'allocation mémoire
Bonjour à tous
Mon code est fonctionnel. Mais je cherche à expliquer son comportement
Voici le code:
-------------------------------
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| char*p="test ok1 ok2";
char*ch1,ch,lex;
char*tab[3];
ch1=malloc((strlen(p)+1)*sizeof(char)));
strcpy(ch1,s);
while (*ch1 && (lex=strpbrk(ch1," "))){
ch=(char*)malloc(((lex-tmp)+1)*sizeof(char));/* mon problème est là*/
strncpy(ch,ch1,(lex-ch1))[tok-ch1+1]='\0';
tab[i++]=ch;
ch1=lex+1;
tab[i]='\0';
} |
------------------------------
Le but est de découper slon des espaces et pointer tab[i] sur "le token"
Quand j'affiche tab[i] j'ai le résulatat attendu ( tab[0]=test et tab[1]=ok1).
Ma question:
Normalement quand je passe à la deuxième itération , je m'attends à ce que
le contenu de "ch" qui contient déja le token "test" soit écrasé. Donc l'affichage doit être seulement : tab[0]=ok1. Mais l'affichage est:
tab[0]=test
tab[1]=ok1
Ch n'est pas ecrasé? c'est bizarre?
Merci d'avance