程序在内存中占的四个区域
来源:互联网 发布:2016年11月网络热搜 编辑:程序博客网 时间:2024/03/29 07:09
首先,任何一个程序在执行的时候都会把其代码、变量等储存在一个地方。也就是说在内存中分四个区域来存储。
四个区域:
1.代码区;
2.全局栈区;
3.堆;
4.局部栈。
同个一个小例子可以简单看一下:
我们利用linux来写一段代码,
printf("%d\n",getpid());
while(1);
}
编译,生成一个可执行文件,然后可以看到一个pid号码.while(1)的意思是让程序一直运行下去,因为如果程序停止,进程就不存在了,pid号也不存在,并且没法看其内存分布了。运行程序,然后重新打开一个终端窗口,进入/proc目录,然后进入对应的pid号的文件夹下。文件夹下有很多东西,其中cwd是工作路径,exe指向执行程序,fd,cpuset是程序用cpu的信息,maps是所有的内存结构,对就看一下maps。
然后可以看到内存结构,main(程序名字)那个空间中权限里带x的就是代码区了,可以看到,main函数和add函数都在这里面;stack这个空间就是局部栈了,存储函数中的一些变量;而可以看到存储全局变量的那块空间是全局栈,全局栈一般都有w权限;而malloc对应的就是堆了。
所以,a1,a2在全局区,a3在代码区,b1在栈中,b2在全局区,b3在局部站区,p1在堆中,main在代码区,add在代码区。
0 0
- 程序在内存中占的四个区域
- 程序在内存中的数据区域
- 程序在内存的分布
- 程序的内存区域
- Java四个内存区域
- 调试程序的四个法则
- 程序编译的四个阶段
- 程序在内存的分配方式
- JAVA 程序在内存上的分布
- 程序在内存中运行的奥秘
- 程序在内存中运行的奥秘
- 程序在内存中运行的奥秘
- 程序在内存中运行的奥秘
- 程序在内存中运行的奥秘
- 程序在内存中运行的奥秘
- 程序在内存中运行的奥秘
- 程序运行时,在内存中是分段的
- 程序在内存分配的基本情况
- point on C_5 操作符和表达式
- strchrMy的实现
- ML基石_9_LinearRegression
- 大整数加法
- Android Studio 之路1
- 程序在内存中占的四个区域
- Matlab-GUI 这个例子包含了几乎所有的matlab按钮
- linux 环境变量归类和配置
- stm32F103 模拟I2C mpu6050收到数据全为0,或者地址为209,104,0x68,0xD0的一些解决办法总结
- linux mknod命令解析
- JavaBean的编译和部署说明
- 【Python】Learn Python the hard way, ex4 使用变量
- 利用MSSQL复制功能实现与Oracle数据库同步
- ns-2与TCP拥塞模拟 之六 ns-2 TCP拥塞控制核心模块-变量说明