2008-09-28 6 views
3

J'ai ouvert mon application Hello World Obj-C compilée dans un éditeur de texte et, à ma grande surprise, j'ai trouvé environ 8 kilo-octets de 00 00 00 00 00 00 00 00 ...Pourquoi la moitié de mon compilateur (petit) objectif-C file-t-il un gros bloc de zéros?

Pourquoi ces éléments sont là? Existe-t-il un moyen de vider ces zéros (dont je doute beaucoup trop beaucoup de fonction)?

De toute évidence, ce n'est pas si important dans ce fichier, vu que c'est seulement 16ko pour commencer, mais j'aimerais quand même savoir.

Répondre

7

Il est fort probable qu'il y ait du remplissage entre le code, les données, la relocalisation ou d'autres sections du format exécutable que vous utilisez.

Les lieurs aiment tamponner de telles sections sur une limite de 4k ou 8k. Cela améliore le temps de chargement pour le prix d'un peu de perte de mémoire.

Pour un monde de salut simple, c'est important, mais pour une grande application, la mémoire supplémentaire utilisée pour le rembourrage est négligeable.

0

Est-ce que Objective-C supporte la liaison incrémentale? Cela expliquerait pourquoi il y avait beaucoup d'espace de remplissage.

0

Certains compilateurs ou lieurs veulent un nombre arrondi pour la taille du fichier. Vous pouvez voir que lorsque vous ajoutez du code, la taille du fichier n'augmente pas. Je suppose que c'est les zéros que vous voyez.

-1

Peut-être que c'est une variable statique? Je sais que dans de nombreux langages de type C, la valeur initiale d'une variable déclarée statique est incorporée dans le code émis par le compilateur. Au moment de l'exécution, cette valeur initiale est mappée à la mémoire du processus. Peut-être que vous (ou un code que vous incluez ou que vous liez par rapport) définit un tableau de 8 Ko initialisé à zéro.