Modifying value of char pointer in c produces segf

2019-01-20 20:17发布

问题:

The following code produces a segmentation fault on my system. I can't figure out why. Any help would be appreciated.

#include<stdio.h>
int main() {
    char * a = "abc";
    *a = 'c';
    printf("%c\n", *a);
    return 0;
}

回答1:

The standard explicitly lists this as undefined behavior in §J.2:

— The program attempts to modify a string literal (6.4.5)

If you want to copy it into a local array, do:

char a[] = "abc";

a is an array on the stack, and you can modify it freely.



回答2:

Attempting to modify a string literal causes undefined behaviour.