博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
内存四区分析
阅读量:6316 次
发布时间:2019-06-22

本文共 663 字,大约阅读时间需要 2 分钟。

代码区

    代码区code,程序被操作系统加载到内存的时候,所有的可执行代码都加载到代码区,也叫代码段,这块内存是不

可以在运行期间修改的。

静态区
    所有的全局变量以及程序中的静态变量都存储到静态区,比较如下两段代码的区别
#include 
int a = 0;int main(){ static int b = 0; printf("%p, %p\n", &a, &b); system("pause"); return 0;}
int a = 0;static int b = 0;int main(){	printf("%p, %p\n", &a, &b);	return 0;}
int a = 10;int b = 100;int main(){	{		static int c = 200;	}	int *p = &b;	printf("%d\n", *(++p));//可以访问到200	//printf("%p, %p, %p\n", &a, &b, &c);	return 0;}
通过打印出来的地址,可以分析出结论。

栈区
     栈stack是一种先进后出的内存结构,所有的自动变量,函数的形参都是由编译器自动放入栈中,当一个自动变量
超出其作用域时,自动从栈中弹出。
堆区
    
    堆heap和栈一样,也是一种在程序运行过程中可以随时修改的内存区域,但没有栈那样先进后出的顺序。
    堆是一个大容器,它的容量要远远大于栈,但是在c语言中,堆内存空间的申请和释放需要手动通过代码来完成。

你可能感兴趣的文章
没想到cnblog也有月经贴,其实C#值不值钱不重要。
查看>>
【转】LUA内存分析
查看>>
[转] Entity Framework Query Samples for PostgreSQL
查看>>
软件需求分析的重要性
查看>>
UVA465:Overflow
查看>>
HTML5-placeholder属性
查看>>
Android选择本地图片过大程序停止的经历
查看>>
poj 2187:Beauty Contest(旋转卡壳)
查看>>
《Flask Web开发》里的坑
查看>>
Python-库安装
查看>>
Git笔记
查看>>
普通人如何从平庸到优秀,在到卓越
查看>>
SLAM数据集
查看>>
c#学习笔记05——数组&集合
查看>>
【图论算法】Dijstra&BFS
查看>>
注册和上传文件(头像)
查看>>
使用OVS
查看>>
键盘回收的几种方法
查看>>
Python(条件判断和循环)
查看>>
day4 linux安装python
查看>>