一、内存四区的建立流程
流程说明:
1、操作系统把物理硬盘代码load到内存;
2、操作系统把C代码分成四个区;
3、操作系统找到main函数入口执行。
二、各区元素分析
三、静态存储区
相同的常量在静态存储区只有一份数据,一个地址,实验代码:
#include "stdio.h"
char * getStr1()
{
char *p1 = "abcdefg1";
return p1;
}
char * getStr2()
{
char *p2 = "abcdefg2";
return p2;
}
char * getStr3()
{
char *p3 = "abcdefg1";
return p3;
}
int main()
{
char *p1 = NULL;
char *p2 = NULL;
char *p3 = NULL;
p1 = getStr1();
p2 = getStr2();
p3 = getStr3();
//打印指针所指向内存空间的值
printf("p1:%s,p2:%s,p3:%s\n",p1,p2,p3);
//打印指针的值
printf("p1:%d,p2:%d,p3:%d\n", p1, p2, p3);
system("pause");
return 0;
}
运行结果:
可以看出p1和p2指向的内存空间的值是不一样的,p1和p2的值也是不一样的。
但是p1和p3所指向的内存空间的值是一样的,p1和p3的值也是一样的。
所以相同常量在静态存储区只有一份,一个地址。