可能重复:
Why does simple C code receive segmentation fault?
Modifying C string constants?
为什么此代码会产生访问冲突?
int main()
{
char* myString = "5";
*myString = 'e'; // Crash
return 0;
}
答案 0 :(得分:5)
* mystring显然指向只读静态内存。 C编译器可能在只读存储中分配字符串文字,这可能不会在运行时写入。
答案 1 :(得分:2)
字符串文字被认为是常量。
答案 2 :(得分:0)
编写代码的正确方法是:
const char* myString = "5";
*myString = 'e'; // Crash
return 0;
在这种情况下,您应该始终考虑添加“const”,因此很明显更改此字符串可能会导致未指定的行为。