[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [linux-team] Question C et Linux
Eric Darchis wrote:
>
> Hello !
>
> J'ai une question difficile de C sur Linux. Considerons le programme suivant:
> /*** testeda.c ***/
> #include <stdio.h>
>
> main()
> {
> char *ptr="Hello";
> ptr[0]='P';
> }
> /**************/
>
> Ce programme marche sur Windows ainsi que sur la plupart des Unix que j'ai
> testes (Sinix, AIX, NCR, ...) sauf sur Linux. Sous Linux, j'ai un
> segmentation fault.
>
> Ceci dit, c'est normal. ptr est un pointeur. Ce pointeur est dans le
> segment de donnees et pointe sur une chaine dans le segment de code. Et le
> segment de code est cense etre read-only... D'ou l'erreur. Dans ce
> programme de test, il suffit de declarer char ptr[]="Hello" pour que la
> string soit allouee dans le segment de data mais dans le cadre du portage
> d'un certain soft, ce n'est pas utilisable.
>
> La question est: est-il possible de forcer GCC (ou egcs) a permettre ce
> genre de chose ?
Si tu compiles avec l'option '-traditional', il n' y a plus de probleme.
Mais cependant le livre de reference de Kernighan et Ritchie specifie
que le resultat de ce genre d'affectation (chaine constante) est indefini.
Ludovic Kuty.
---------
This message was send by Majordomo 1.94.3. Please repport problems to
manu@rtfm.be. If you want to be deleted from the list, send a mail to
majordomo@rtfm.be with "unsubscribe linux-team" in the body.