[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.