修改C字符串:访问冲突

时间:2009-06-22 07:40:09

标签: c++ c string

  

可能重复:
  Why does simple C code receive segmentation fault?
  Modifying C string constants?

为什么此代码会产生访问冲突?

int main()
{
    char* myString = "5";
    *myString = 'e'; // Crash
    return 0;
}

3 个答案:

答案 0 :(得分:5)

* mystring显然指向只读静态内存。 C编译器可能在只读存储中分配字符串文字,这可能不会在运行时写入。

答案 1 :(得分:2)

字符串文字被认为是常量。

答案 2 :(得分:0)

编写代码的正确方法是:

const char* myString = "5";
*myString = 'e'; // Crash
return 0;

在这种情况下,您应该始终考虑添加“const”,因此很明显更改此字符串可能会导致未指定的行为。