当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 6 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : ELF格式文件的问题
帖子发表于 : 2009-08-04 14:12 

注册: 2009-08-04 13:53
帖子: 27
送出感谢: 0 次
接收感谢: 0 次
关于ELF格式文件中,BSS文件是不分配空间的,要等到运行时才分配空间。我想问,比如说局部为初始化静态变量 int static local_var, 它在编译生成目标文件后事放在哪个section的??难道不是在data section吗? 放在bss section中的话为什么又不分配空间给它,不分配空间怎么可能能放置的下啊??请哪位高手帮忙解答,thanks


页首
 用户资料  
 
2 楼 
 文章标题 : Re: ELF格式文件的问题
帖子发表于 : 2009-08-04 14:25 

注册: 2009-08-04 13:53
帖子: 27
送出感谢: 0 次
接收感谢: 0 次
哪位兄弟帮忙,急~


页首
 用户资料  
 
3 楼 
 文章标题 : Re: ELF格式文件的问题
帖子发表于 : 2009-08-04 21:35 
头像

注册: 2007-10-14 0:50
帖子: 306
地址: GUCAS
送出感谢: 0 次
接收感谢: 1
bss不占用文件的空间,只是未初始化的数据用来占内存地址空间的,未初始化的变量在生成的目标文件中不占用空间,只有在运行的时候才分配内存(也就是为bss分配空间)。
你上面的local_var就放在bss section中,不分配空间那时因为分配空间也没用,分配的空间里放什么数据呢?所以像这种未初始化的数据在程序运行时才分配空间,此时按照各种系统的规定初始化这些变量。程序在用这些变量之前需要为它们再次初始化(你不可能用没有初始化的变量,因为不知道系统把它们初始化成什么数据了),此时就可以在固定的内存地址引用该变量了。


_________________
OS: Debian GNU/Linux
Version: lenny
Kernel: 2.6.36
Xorg: 1.4.2
CPU: Intel(R) Core(TM)2 Duo CPU E8400 @ 3.00GHz
HD: 320G SATA
Memory: 2G DDRIII
Graphics:Mobility Radeon HD 3450


页首
 用户资料  
 
4 楼 
 文章标题 : Re: ELF格式文件的问题
帖子发表于 : 2009-08-05 10:15 

注册: 2009-08-04 13:53
帖子: 27
送出感谢: 0 次
接收感谢: 0 次
那就是说,bss section其实是没有实际内容的,只是通过sysbol table 等section来“描述”它确实存在而已了?


页首
 用户资料  
 
5 楼 
 文章标题 : Re: ELF格式文件的问题
帖子发表于 : 2009-08-05 11:05 
头像

注册: 2007-10-14 0:50
帖子: 306
地址: GUCAS
送出感谢: 0 次
接收感谢: 1
bss没有实际内容,符号表存储了程序定义的变量,未初始化的变量在程序被载入内存时在bss分配的内存空间中初始化。bss也是一个section,在elf的section header table结构中定义它的位置。


_________________
OS: Debian GNU/Linux
Version: lenny
Kernel: 2.6.36
Xorg: 1.4.2
CPU: Intel(R) Core(TM)2 Duo CPU E8400 @ 3.00GHz
HD: 320G SATA
Memory: 2G DDRIII
Graphics:Mobility Radeon HD 3450


页首
 用户资料  
 
6 楼 
 文章标题 : Re: ELF格式文件的问题
帖子发表于 : 2009-08-06 8:51 

注册: 2009-08-04 13:53
帖子: 27
送出感谢: 0 次
接收感谢: 0 次
command 写道:
bss没有实际内容,符号表存储了程序定义的变量,未初始化的变量在程序被载入内存时在bss分配的内存空间中初始化。bss也是一个section,在elf的section header table结构中定义它的位置。

thank you. 我明白了。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 6 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译