3

我在文本编辑器中打开了我编译的 Hello World Obj-C 应用程序,令我惊讶的是,我发现了大约 8 KB 的 00 00 00 00 00 00 00 00 ...。

这些为什么会在这里?有没有办法清除这些零(我怀疑它有太多功能)?

显然它在这个文件中并不那么重要,因为它开始只有 16kB,但我还是想知道。

4

4 回答 4

7

它很可能是您使用的可执行格式的代码、数据、重定位或其他部分之间的填充。

链接器喜欢在 4k 或 8k 边界上填充这些部分。这以一些内存浪费为代价提高了加载时间。

对于一个简单的 hello world,它很重要,但对于大型应用程序,用于填充的额外内存可以忽略不计。

于 2008-09-28T15:05:38.587 回答
0

Objective-C 是否支持增量链接?这可以解释为什么有很多填充空间。

于 2008-09-28T14:56:46.360 回答
0

一些编译器或链接器需要一些文件大小的整数。您可以看到,当您添加一些代码时,文件大小并没有增加。我想这就是你看到的零。

于 2008-09-28T14:57:38.357 回答
-1

也许它是一个静态变量?我知道在许多类 C 语言中,声明为静态的变量的初始值嵌入在编译器发出的代码中。在运行时,这个初始值被映射到进程的内存。也许您(或您包含或链接的某些代码)定义了一个 8 KB 的零初始化数组。

于 2008-09-28T19:04:35.343 回答