Aufgabe 3 Implementierung


Das hier könnte dich interessieren: http://duma.sourceforge.net/


Vielen Dank fuer den Link, schaut sehr sehr nuetzlich aus, werd mir mal den sourcecode anschaun und schaun wie sie des alles erreichen von wegen buffer-overflows erkennen, etc, wuerde mich interessieren. Hab im Moment fuer den Zweck ne bib von meinem Vater den des ganze auch genervt hat. Werds mir anschaun, danke.



Klar, zwischen Aufrufen von [m]malloc()[/m] oder [m]free()[/m] wird nichts geprüft, da läuft ja auch anderer Code und nicht die Freispeicherverwaltung. Aber sobald ein Fehler entdeckt wird, eben z.B. beim [m]free()[/m] wird abgebrochen. Früher geht es nicht, wenn es effizient sein soll.

Es stimmt schon, dass der MAGIC-Schutz nicht perfekt ist. Aber es reicht zumindest bei schon allokierten Blöcken. Freie Blöcke müsste man noch extra prüfen, zum Beispiel durch eine Plausibilitätsprüfung der Pointer (sind sie innerhalb von [m]memory[/m]); das sollte die meisten unabsichtlichen Fehler abfangen.

Das Wissen steckt in der Freispeicherliste - die muss man dazu durchlaufen. Falls sie beschädigt wird, kommt man an die Informationen natürlich nicht mehr ran.

Ich meinte mit Effizienz vor allem sowas wie Verschmelzung oder effizientere Verwaltung der Freispeicher"liste".

Die Implementierung mit der statischen Tabelle scheint mir nicht so sinnvoll, weil du damit eine feste Anzahl von Speicheranforderungen festlegst. Das sollte nicht der Fall sein. Und wo kopierst du du deine Tabelle hin wenn du mehr Platz brauchst? Du hast ja kein [m]malloc()[/m] zur Verfügung; und in [m]memory[/m] gibt es vielleicht nicht mehr genug zusammenhängenden Speicher.


Das hier könnte auch relevant sein: