//实例1
1 | int a = 0; //全局初始化区 |
//实例2(找bug)1
2
3
4
5
6
7
8
9
10
11
12
13
using namespace std;
int main(){
char a[] = "hello";
//a分配在栈上,char* 类型,“hellp\0”分配在栈上,运行时赋值,程序结束时销毁。
a[0] = 'X';
cout << a << endl;
char *p = "world";
//p分配在栈上,char* 类型,“world\0”存于常量存储区(常量字符串),编译时p存入栈里。
p[0] = 'X';
cout << p << endl;
return 0;
}
其中字符数组a的容量是6,内容是“hello\0”,a的内容是可变的,而p分配在栈上,指向的地址在常量存储区,不可修改,因此修改p的时候会出现非法内存访问。