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

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

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

有帮助吗?

解决方案

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

连接器喜欢在4k或8k边界上填充这些部分。这样可以节省一些内存浪费的加载时间。

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

其他提示

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top