一图看懂程序内存分区
2020-07-31 14:00:23 0 举报
一图看懂程序分区。int a; static int a; a= malloc(1);分不清楚的话就来复习下吧。
作者其他创作
大纲/内容
全局变量或加static修饰的局部数据:例如:文件test.c中全局的1.变量 int a;2.变量数组 char s[10];3.指针 char * p;或函数中fun()中加static修饰的:static int s[20];已初始化就在初始化区,未初始化就在未初始化区
存放函数体的二进制代码。
堆(heap)
文字常量区
所有未加static修饰的局部数据:例如:文件test.c中某个函数fun()中的1.变量 int a;2.变量数组 char s[10];3.指针 char * p;
全局区/静态区
内存分区
栈(stack)
空间较大大小取决于虚拟内存大小不连续向高地址空间扩展
所有文字常量“ABCED”如果内容一样,可能被编译器优化为同一个位置。
程序员申请获取分配的空间: (char *)malloc(10);//c语言new char[20];//C++
空间较小windows下也才1M或2M连续向低地址空间扩展
程序代码区
未初始化区
读取速度降低
初始化区
收藏
收藏
0 条评论
下一页