J'ai donc le programme suivant:Segmentation Fault avec Array Char et pointeur en C sous Linux
int main(){
char* one = "computer";
char two[] = "another";
two[1]='b';
one[1]='b';
return 0;
}
Il segfaults sur la ligne « un [1] = « b » » ce qui est logique car la mémoire le pointeur "un" pointe vers doit être en lecture seule. Cependant, la question est pourquoi la ligne "deux [1] = 'b'" segfault? En regardant la sortie de montage de gcc:
.file "one.c"
.section .rodata
.LC0:
.string "computer"
.LC1:
.string "another"
.text
.globl main
.type main, @function
main:
On voit que les deux chaînes sont dans la section Rodata donc ils sont en lecture seule. Alors, comment se fait-il que la ligne "two [1] = 'b' ne segfault pas?
Voir aussi la question différente, mais liée http://stackoverflow.com/questions/ 1770062/defining-pointer-to-static-string/1770067 # 1770067 –