1

Possible Duplicates:
Why does simple C code receive segmentation fault?
Modifying C string constants?

Why does this code generate an access violation?

int main()
{
    char* myString = "5";
    *myString = 'e'; // Crash
    return 0;
}
Community
  • 1
  • 1
0xC0DEFACE
  • 8,343
  • 7
  • 32
  • 35

3 Answers3

5

*mystring is apparently pointing at read-only static memory. C compilers may allocate string literals in read-only storage, which may not be written to at run time.

Avi
  • 19,663
  • 4
  • 54
  • 69
2

String literals are considered constant.

DevSolar
  • 63,860
  • 19
  • 125
  • 201
0

The correct way of writing your code is:

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

You should always consider adding 'const' in such cases, so it's clear that changing this string may cause unspecified behavior.

inazaruk
  • 73,337
  • 23
  • 185
  • 156