一个关于字符指针的简单有关问题

一个关于字符指针的简单问题
大家帮忙看一下。我就想把a变成8。当然,简便方法是直接用数组改就好了,但这个是测试程序,我想知道为什么错了。提示是内存不能read。

C/C++ code

    char *str = "abcd";        
    printf("%s\n",str);
    char *right =str;

    *right = '8';
    free(right);
    printf("%s\n",str);



------解决方案--------------------
"abcd" 是一个常量字符串, 指向内存的只读区域, 所以是不能修改的.
C 语言以前没有 const, 正确的写法应该是 
const char* str = "abcd";
------解决方案--------------------
你修改常量字符串了···
------解决方案--------------------
顶楼错误:你试图写入只读区

1楼错误:你改了*right,但那关*str何事?总不至于说我往路边垃圾桶扔个垃圾,那东西就会跑到你家门口吧?
------解决方案--------------------
你要是把一串常量字符串传递给这些函数,他们照样得出错。
------解决方案--------------------
探讨

引用:
顶楼错误:你试图写入只读区

1楼错误:你改了*right,但那关*str何事?总不至于说我往路边垃圾桶扔个垃圾,那东西就会跑到你家门口吧?


错误的确是这样,但怎么解决这个问题呢