修改指针常量指向的内容出错,怎么回事情?
int main(int argc, char* argv[])
{
char * const pc= "asdf ";
* pc = 'b ';
*(pc+1)= 'c ';
cout < <pc < <endl;
return 0;
}
编译通过,生成.exe文件,
执行文件时候发生错误:
ooptest.exe 遇到问题需要关闭。我们对此引起的不便表示抱歉。
注释掉* pc = 'b ';
*(pc+1)= 'c ';
就没事了。
请问是怎么回事情?
[解决办法]
char ar[] = "asdf ";
char * const pc = ar;
这样吧
[解决办法]
你没有分配内存,对吧。
那你这个指针指向哪里呢?其实指向的是常量区,这一段是受操作系统保护的。
所以如果你分配了内存,不管是在堆上或在函数栈上都没有问题。
见Chiyer(星羽)的回答。