热门关键字: jsp web pl/sql pl webwor   →开发工具  操作系统
当前位置 : 无忧IT编程网 > 其它语言 > C++ > 正文

程序中的数据在内存中的布局

来源:转载作者:无忧时间:08-01-24
.bss和.data段是专用来存储全局变量的,在编译其间分配地址空间。
.data包含静态的己初始化的数据,而.bss包含未初妈化的数据。
.text段包含程序指令和和很多只读数据。
一个进程在内存中的数据组织如下图
+-------------------+  high address
|    env strings    |
+-------------------+
|    argv strings   |
+-------------------+
|    env pointers   |
+-------------------+
|    argv pointers  |
+-------------------+
|    argc           |
+-------------------+
|    stack          |
|      ^            |
|      |            |
|      |            |
|      v            |
|    heap           |
+-------------------+
|    .bss           |
+-------------------+
|    .data          |
+-------------------+
|    .text          |
+-------------------+  low address
1、stack
int func()
{
    int i = 0;
    ...
}
int main(int argc, char *argv[])
{
    int j;
}
i, j都存储于stack中。
2、heap
int main()
{
    char *data = malloc(10);
    ...
}
data指向一个地址,该地址在heap中
3、.bss
char global;
int main()
{
    ...
}
int main()
{
   static int bss_var;
}
global和bss_var存放于.bss中,它们是未初始化的全局变量和静态变量。
4、.data
char global = ’a’;
int main(int argc, char *argv[])
{
    ...
}
int main(int argc, char *argv[])
{
    static char data_var = ’a’;

      

最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 验证码: 验证码
查看所有评论
相关文章
站长推荐