首页
社区
课程
招聘
[求助]内存组织的困惑
发表于: 2007-11-17 15:14 3604

[求助]内存组织的困惑

2007-11-17 15:14
3604
一般书上都说,内存布局大致是这样的

-----------------     -> 地址高位
¦   栈(stack) ¦
----------------
¦   堆(stack) ¦
-----------------
¦   BSS           ¦
------------------
¦   DATA         ¦
------------------
¦   TEXT          ¦
------------------  —> 地址低位
现在有一些疑惑
#include   <stdio.h>
int   glob;

void   main(){
    int   local;
    printf( "0x%08x\n ",&glob);   //打印本地变量的内存地址   
    printf( "0x%08x\n ",&local);   //打印全局变量的内存地址   
}

在我机器上执行的结果是
0x00411d68
0x0012ff7c

我的问题是:glob是未初始化的全局变量应该放在bss段中,而
local是局部变量应该放在栈中。
依照以上的内存布局,我有些不理解,
为什么glob的内存地址会比local的内存地址高??

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 834
活跃值: (38)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
2
你把2个概念混淆了:
1. PE文件的段布局
text, data, idata, bss等是文件的段,是静态的。
2.PE文件运行的内存地址分配
栈,堆这些是运行时才有的概念,是OS管理的。具体分布,要看OS的内存管理。
2007-11-18 17:18
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
一语点醒梦中人,谢谢了!!
2007-11-18 23:56
0
游客
登录 | 注册 方可回帖
返回