3

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

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

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

2 回答 2

1

在 linux 上,格式为

   text    data     bss     dec     hex filename
   1281     520      32    1833     729 a.out

BSS是零初始化的全局变量和局部静态变量的字节大小。我验证了它们(数据、bss 等)随着变量数量及其初始化值的变化而相应变化。

需要注意的一点是,在 CWD 中size自动选择没有任何参数。a.out

我完全不知道Mac中的东西。我的猜测是__OBJC= BSS。还要检查你是如何调用size命令的

于 2012-04-25T12:48:30.773 回答
1

所有静态变量和全局变量都已初始化,只是它们是否初始化为零或其他值的问题。初始化为零的变量进入__DATA段的 __bss部分。其他变量将进入 __DATA 段的其他部分。

于 2012-04-25T14:11:52.123 回答