2008-09-28 33 views
3

我在文本編輯器打開了我的編譯的Hello World的OBJ-C的應用,令我驚訝的是,我發現了大約8千字節00 00 00 00 00 00 00 00 ....爲什麼我的一半編譯(小)Objective-C文件是一大塊零?

爲什麼這些在這裏?有沒有辦法清除這些零點(我懷疑多功能)?

很明顯,這個文件並不是那麼重要,因爲它只有16kB開頭,但我仍然想知道。

回答

7

它很可能是代碼,數據,重定位或您使用的可執行格式的其他部分之間的填充。

接頭等以在4K或8K邊界墊這樣的段。這樣可以縮短加載時間,降低一點內存浪費的代價。

對於一個簡單的hello世界來說這很重要,但對於大型應用程序來說,用於填充的額外內存是可以忽略的。

0

Objective-C是否支持增量鏈接?這將解釋爲什麼有很多填充空間。

0

一些編譯器或鏈接器想要一些文件大小的整數。您可以看到,當您添加一些代碼時,文件大小不會增加。我想這是你看到的零。

-1

也許這是一個靜態變量?我知道在很多C語言中,聲明爲static的變量的初始值嵌入在編譯器發出的代碼中。在運行時,這個初始值被映射到進程的內存。也許你(或者你包含或鏈接的一些代碼)定義了一個8KB零初始化數組。

相關問題