Mittwoch, 13. Mai 2009
Speicherlayout - Lösung
Was bedeuten die Ausgaben des Programms bzw. welchen Zweck verfolgt dieses Programm?
Die Speicheradressen und die Inhalte an diesen Adressen werden ausgegeben. Es zeigt, wie der Speicher für Variable reserviert wird.
Von Programmieren mit Harald R. Haberstroh |
Man sieht, dass int
Variable jeweils 4 Bytes groß sind (bei 32 Bit rechnern).
Speicher wird in der Reihenfolge der Deklaration von oben nach unten angelegt, d.h. beginnend mit höheren Speicheradressen. Bei Arrays ist der niedrigste Index jedoch an der niedrigsten Stelle des entsprechenden Speicherbereichs.
Es ist extrem wichtig diese Speicherorganisation zu verstehen, da viele Programmierfehler und Sicherheitsprobleme (Einbrüche in Web-Server, Verbreitung von Würmern und Viren) auf diesem Speicherlayout basieren.
Was bedeuten die Argumente von main
?
Die Argumente entsprechen dem from sys import argv
von Python. Da in C Arrays keine Zusatzinformationen über Länge (Anzahl) enthalten, wird die Anzahl der Elemente im Parameter argc
übergeben. argc
enthält die Anzahl der Programmparameter (incl. Programmname), argv
ist ein Array mit den Argumenten.
Abonnieren Posts [Atom]
Kommentar veröffentlichen