为什么修改字符串文字会导致分段错误?

时间:2013-10-25 22:45:08

标签: c

为什么修改预先初始化的字符串文字会导致分段错误?例如:

char *str = "Hello world";
str[0] = 'h'; 

当您将str初始化为该字符串值时,编译器是否自动为该字符串常量分配内存,将其起始位置分配给str并在程序退出时释放它?

1 个答案:

答案 0 :(得分:2)

它位于进程地址空间的只读部分,因为字符串文字是常量。 (str变量不在只读空间中,但应该使它指向有效的可写位置,然后才能像你一样使用它。)