指针与数组
时间:2010-09-26 来源:summersunboy
void foo () |
下面这条语句很容易明白 char *str2 = "456"; str2[0] = 'Y'; 456放在了只读数段,str2要修改只读区的数据,所以会出错。但是不太明白为什么str1的内容可以改变?反汇编后的代码:
.file "test.c" |
现在明白了,呵呵。原来 :123456789 和 456 都放在只读代码段中的,char str1[] = "123456789"; 中char str1[] 是放在栈中的,只不过是复制了"123456789" 这个数据。所以看起来好像是"123456789" 放在了栈中(或者说,好像是str1修改了只读代码段的内容)。