Mac上“size”命令的数据部分大小

时间:2012-04-25 12:36:23

标签: linux macos size osx-leopard unix

考虑到Mac OS X 10.5上的“size”命令在小型可执行文件上的以下输出,__DATA下的值是多少?它是未初始化的数据段大小还是初始化的数据段大小?我发现令人困惑的是,无论我是否在程序中初始化(唯一的)全局数组,这个值(以及其余的值)似乎都没有改变。

我猜这个命令在Linux和Mac上的工作方式不同?

__TEXT  __DATA  __OBJC  others  dec hex
4096    4096    0   4294971392  4294979584  100003000

2 个答案:

答案 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段的其他部分。