Question

J'ai compilé un fichier C qui ne fait absolument rien (juste un main qui retourne ... même pas un « Bonjour, monde » est imprimé), et je l'ai compilé avec différents compilateurs (GCC MinGW, Visual C ++ , Windows DDK, etc.). Tous les liens avec le runtime C, ce qui est standard.

Mais ce que je ne comprends pas est: Quand j'ouvre le fichier dans un éditeur hexadécimal (ou un désassembleur), pourquoi est-ce que je vois que près de la moitié des 16 Ko est tout simplement énorme sections des deux octets 0x00 ou 0xCC octets ? Il semble un peu ridicule pour moi ... est-il un moyen d'empêcher ces de se produire? Et pourquoi sont-ils là en premier lieu?

Merci!

Était-ce utile?

La solution 2

Comme il se trouve, j'aurais pu deviner ce avance ... la réponse a été les symboles de débogage et le code; ceux qui prenaient la majeure partie de l'espace. Non compilation avec / DEBUG et / APB (que je fais toujours par défaut) a réduit le 13 K jusqu'à 3 K.

Autres conseils

exécutables contiennent généralement un segment de code et au moins un segment de données. Je suppose que chacun d'entre eux a une taille minimale standard, qui peut être 8K. Et l'espace inutilisé est rempli avec des zéros. Notez également qu'un EXE écrit dans un niveau plus élevé (que l'assemblage) langue contient quelque chose de plus en plus de la traduction directe de votre propre code et les données:

  • démarrage et le code de terminaison (en C et ses successeurs, ce gère les arguments d'entrée, appelle main(), nettoie ensuite après la sortie de main())
  • code stub et les données (par exemple Windows contiennent un executables petit bout de programme DOS dont le seul but est d'afficher le message « Ce programme n'est pas exécutable sous DOS »).

Cependant, depuis executables sont généralement censés faire quelque chose (à savoir leur code et le segment de données (s) ne contiennent des choses utiles), et le stockage est pas cher, par défaut Noone optimise votre cas: -)

Cependant, je crois que la plupart des compilateurs ont des paramètres de ligne de commande avec laquelle vous pouvez les forcer à optimiser l'espace - vous pouvez vérifier les résultats avec ce réglage

.

Voici plus de détails sur les formats de fichier EXE .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top