标签: c
为什么修改预先初始化的字符串文字会导致分段错误?例如:
char *str = "Hello world"; str[0] = 'h';
当您将str初始化为该字符串值时,编译器是否自动为该字符串常量分配内存,将其起始位置分配给str并在程序退出时释放它?
str
答案 0 :(得分:2)
它位于进程地址空间的只读部分,因为字符串文字是常量。 (str变量不在只读空间中,但应该使它指向有效的可写位置,然后才能像你一样使用它。)