1. 4个内存区域的用途:
代码区:存放程序的可执行代码(二进制文件)
全局数据区:存储静态变量、全局变量和字符串常量,若定义时未给出初值,自动初始化为0
栈区: 由编译器自动分配释放,存放函数的入参,局部变量的值等
堆区:一般由程序员动态分配释放,若不及时释放,会造成内存泄露
2.说明下面代码各个变量以及指针指向的区域在内存空间的区域:
int a = 0; //全局初始化区(数据段)
char *p1; //全局未初始化区(BBS段)
int main()
{
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字节的区域在堆
}