Así que tengo el siguiente programa:Segmentation Fault Con Char matriz y puntero en C en Linux
int main(){
char* one = "computer";
char two[] = "another";
two[1]='b';
one[1]='b';
return 0;
}
Se segfaults en la línea de "uno [1] = 'B'", lo cual tiene sentido porque la memoria que el puntero "uno" señala que debe estar en la memoria de solo lectura. Sin embargo, la pregunta es por qué la línea "dos [1] = 'b'" no falla? En cuanto a la salida de montaje de gcc:
.file "one.c"
.section .rodata
.LC0:
.string "computer"
.LC1:
.string "another"
.text
.globl main
.type main, @function
main:
vemos que ambas cadenas están en la sección Rodata por lo que son de sólo lectura. De manera que ¿cómo es que la línea de "dos [1] = 'B' no segfault?
Véase también la pregunta diferente pero relacionado http://stackoverflow.com/questions/ 1770062/defining-pointer-to-static-string/1770067 # 1770067 –