原文地址:http://blog.csdn.net/xcyuzhen/article/details/4543264C++中栈区 堆区 常量区(由一道面试题目而学习)2009-04-28 21:01 #includevoid main(){char a[]="abc";栈 char b[]="abc";栈 char* c="abc";abc在常量区,c在栈上。char* d="abc"; 编译器可能会将它与c所指向的"abc"优化成一个地方。const char e[]="abc";栈 const char f[]="abc";栈 cout << a << " " << b << " " << c << " " < << " " < << " " < < <<(a==b?1:0)< <<(c==d?1:0)< <<(e==f?1:0)< #include //#include //malloc的头文件可以为#include 也可以为#include #include int a = 0; 全局初始化区 char *p1; 全局未初始化区 main() {const char* m = "123456";int b; 栈 char s[] = "abc"; 栈 char *p2; 栈 char *p3 = "123456"; 123456在常量区,p3在栈上。 static int c =0; 全局(静态)初始化区 p1 = (char *)malloc(10); p2 = (char *)malloc(20); 分配得来得10和20字节的区域就在堆区。 strcpy(p1, "123456"); 123456放在常量区,编译器可能会将它与p3所指向的"123456"优化成一个地方。 cout<<(m == p3?1:0)<