考虑到Mac OS X 10.5上的“size”命令在小型可执行文件上的以下输出,__DATA下的值是多少?它是未初始化的数据段大小还是初始化的数据段大小?我发现令人困惑的是,无论我是否在程序中初始化(唯一的)全局数组,这个值(以及其余的值)似乎都没有改变。
我猜这个命令在Linux和Mac上的工作方式不同?
__TEXT __DATA __OBJC others dec hex
4096 4096 0 4294971392 4294979584 100003000
答案 0 :(得分:1)
在linux上,格式为
text data bss dec hex filename
1281 520 32 1833 729 a.out
BSS
是零初始化全局变量和局部静态的大小(以字节为单位)。我验证了它们(数据,bss等)随着变量数量及其初始值的变化而发生了适当的变化。
需要注意的一点是,size
没有任何参数会自动在CWD中选择a.out
。
我完全不知道Mac中的东西。我猜是__OBJC
= BSS
。还要检查如何调用size
命令
答案 1 :(得分:1)
所有静态和全局变量都被初始化,这只是它们是初始化为零还是其他值的问题。初始化为零的变量将进入__DATA 段的__bss 部分。其他变量将进入__DATA段的其他部分。