我在文本编辑器中打开了我编译的 Hello World Obj-C 应用程序,令我惊讶的是,我发现了大约 8 KB 的 00 00 00 00 00 00 00 00 ...。
这些为什么会在这里?有没有办法清除这些零(我怀疑它有太多功能)?
显然它在这个文件中并不那么重要,因为它开始只有 16kB,但我还是想知道。
我在文本编辑器中打开了我编译的 Hello World Obj-C 应用程序,令我惊讶的是,我发现了大约 8 KB 的 00 00 00 00 00 00 00 00 ...。
这些为什么会在这里?有没有办法清除这些零(我怀疑它有太多功能)?
显然它在这个文件中并不那么重要,因为它开始只有 16kB,但我还是想知道。
它很可能是您使用的可执行格式的代码、数据、重定位或其他部分之间的填充。
链接器喜欢在 4k 或 8k 边界上填充这些部分。这以一些内存浪费为代价提高了加载时间。
对于一个简单的 hello world,它很重要,但对于大型应用程序,用于填充的额外内存可以忽略不计。
Objective-C 是否支持增量链接?这可以解释为什么有很多填充空间。
一些编译器或链接器需要一些文件大小的整数。您可以看到,当您添加一些代码时,文件大小并没有增加。我想这就是你看到的零。
也许它是一个静态变量?我知道在许多类 C 语言中,声明为静态的变量的初始值嵌入在编译器发出的代码中。在运行时,这个初始值被映射到进程的内存。也许您(或您包含或链接的某些代码)定义了一个 8 KB 的零初始化数组。