tags:

views:

309

answers:

3

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;
}
+3  A: 

*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
+2  A: 

String literals are considered constant.

DevSolar
A: 

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