Alx : Peut-être. Moi je vois les choses comme ça :
Le char *, sans être directement alloué, pointait tout de même vers un tableau de char valide (et donc alloué), mais const. Donc possiblement non modifiable par le programme, et qui aurait pu conduire à une seg fault (mais je ne sais pas comment réagit la ds dans une situation où un seg fault serait apparu sur PC).
On se retrouve dans une situation similaire à ce bout de code (si il avait passé la compilation

), qui dissocie l'allocation du pointage :
(c):
const char test[] = "coucou";
char *fe = test;
Après correction, la situation est semblable à cela :
(c):
char test[100];
char *fe = test;
fe pointe dans chaque cas vers une zone mémoire réservée, mais pas forcément accessible dans le premier cas.
Il est aussi possible que la ds s'en tamponne le bas du dos des zone mémoire (vu qu'elle a pas de MMU) et qu'il suffise de mettre un truc du genre
(c):
char * fr = "beaucoup de place pour pas deborder"

!
T'en penses quoi ?