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