谈谈程序在内存中的分布
原文地址:http://blog.csdn.net/high_high/article/details/7202233
作为一个菜鸟,这个题目有点大,所以这篇博客缺点是可能不够深入,但应该还是很详细的,希望能对大家有所帮助。
1.简介加初步分析
在linux系统中,程序在内存中的分布如下所示:
低地址 | .text | .data | .bss | heap(堆) --> | unused | <-- stack(栈) | env | 高地址 |
其中 :
.text 部分是编译后程序的主体,也就是程序的机器指令。
.data 和 .bss 保存了程序的全局变量,.data保存有初始化的全局变量,.bss保存只有声明没有初始化的全局变量。
heap(堆)中保存程序中动态分配的内存,比如C的malloc申请的内存,或者C++中new申请的内存。堆向高地址方向增长。
stack(栈)用来进行函数调用,保存函数参数,临时变量,返回地址等。
下面是测试用的程序,比较简单,用来输出各个变量的地址。
copyright © 2008-2019 亿联网络 版权所有 备案号:粤ICP备14031511号-2