Warum ist die Hälfte meiner zusammengestellt (small) Objective-C-Datei ein großer Block von Nullen?

StackOverflow https://stackoverflow.com/questions/146025

  •  02-07-2019
  •  | 
  •  

Frage

öffnete ich meine kompilierte Hallo Welt Obj-C-Anwendung in einem Texteditor und zu meiner Überraschung fand ich etwa 8 Kilobyte 00 00 00 00 00 00 00 00 ....

Warum ist diese hier? Gibt es eine Möglichkeit, diese Nullen zu löschen (was ich bezweifle haben zu viel Funktion)?

Natürlich ist es nicht so wichtig, in diese Datei, da es nur 16kB ist zu beginnen, aber ich möchte auf jeden Fall kennen.

War es hilfreich?

Lösung

Es ist sehr wahrscheinlich Polsterung zwischen Code, Daten, Verlagerung oder andere Abschnitte des ausführbaren Format, das Sie verwenden.

Linkers wie aufzufüllen solche Abschnitte auf einer 4K oder 8K-Grenze. Dies verbessert die Ladezeit für den Preis eines wenig Speicher-Abfall.

Für eine einfache Hallo Welt, es ist wichtig, aber für eine große Anwendung der zusätzlichen Speicher für die Polsterung verwendet wird, ist vernachlässigbar.

Andere Tipps

Ist Objective-C-Unterstützung inkrementelle Verknüpfung? Das würde erklären, warum es viel Polsterung Platz war.

Einige Compiler oder Linker wollen einige runde Zahl für die Dateigröße. Sie können sehen, dass, wenn Sie einen Code hinzufügen, noch die Dateigröße nicht erhöht. Ich denke, das ist die Nullen Sie sehen.

Vielleicht ist es eine statische Variable? Ich weiß, dass in vielen C-ähnlichen Sprachen, der Anfangswert einer Variablen, die statisch deklariert wird in dem vom Compiler ausgegebenen Code eingebettet ist. Zur Laufzeit dieses Anfangswert in den Speicher des Prozesses abgebildet. Vielleicht definieren Sie (oder ein Code, den Sie mit oder der Verknüpfung gegen) einen 8 KB Null initialisiert Array.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top