Bonjour,
"chaine" est une chaîne de caractère qui sera stockée dans le "data segment" de ton programme, c'est à dire dans ton fichier exécutable. Contrairement aux variables locales qui sont stockées sur la pile.
Or le "data segment" est en lecture seule donc déjà, il faut écrire :
const char * foo = "foo";
Ensuite, le pointeur pointera sur la chaîne de caractère qui est dans le data segment et qui existe donc du début à la fin du programme. Il n'y a donc pas de copie de la chaîne de caractère.
char * c est donc bien une variable locale qui sera libérée à la fin de l'exécution de ta fonction mais "foo" n'est, quant à elle pas une variable et ne sera pas libérée à la fin de l'exécution de ta fonction.
Partager