Registriert seit: 29. Mai 2002
37.621 Beiträge
Delphi 2006 Professional
|
AW: Minimale Exe-Datei- bzw. Compilatsgröße VCL-freier Delphiprogramme
10. Mai 2012, 13:08
Um es noch mal etwas auszuführen, was himitsu schon gesagt hat. Module (Exe-Dateien, DLLs) werden unter Windows an die sogenannte Imagebaseaddress geladen. auf diese Adresse beziehen sich alle Adressen im Kompilat. Diese Imagebaseaddress wird beim Kompilieren festgelegt. Kann ein Modul nicht an die Imagebaseaddress geladen, weil sich dort schon ein Modul befindet, wird sie an eine andere Adresse geladen. Jetzt stimmen natürlich die Adressen im Programmcode nicht mehr und Windows muss sie neu berechnen. Dazu benötigt Windows den Reallocationtable. Da eine Exe in der Regel als erstes geladen wird, kann man ihn aus der Exe entfernen. Bei DLLs sollte man dies tunlichst nicht tun, da man nicht weiß, ob die Imagebaseaddress schon belegt ist oder nicht. Desweiteren ist der Reallocationtable nicht sehr groß, so dass es das Modul nicht signifikant verkleinert.
Michael Ein Teil meines Codes würde euch verunsichern.
|