Hallo,
Dieser Header enthält Redundanzen. Um Position und Länge eines key- oder value-Eintrags zu bekommen, musst du zwei DWORDs lesen....
Die Redundanzen sind ok, das vereinfacht sowohl das Schreiben als auch das Lesen einer solchen Datei.
vielleicht, ja, aber damit lassen sich auch prima Konflikte erzeugen. Beispiel:
Eintrag #0 Offset 0x0000 Länge 0x0010
Eintrag #1 Offset 0x0010 Länge 0x0030
Eintrag #2 Offset 0x0040 Länge 0x0020
Eintrag #3 Offset 0x0050 Länge 0x0010
Hier belegen Eintrag #2 und Eintrag #3 teilweise denselben Bereich. Okay, auch daraus kann man bei manchen Datenstrukturen einen Nutzen ziehen; man kann Teilmengen eines Eintrags als eigenständige Einträge anlegen, ohne die Daten selbst zu duplizieren. Ist aber heikel ...
Anstelle DWORD ists bei mir ein short, das sind dann nur 2 byte je Integer (16 Bit, ermöglicht 65536 Einträge, reicht dicke).
Wirklich? Hast du daran gedacht, dass damit auch die Gesamtlänge der serialisierten Struktur auf 64kB begrenzt ist? Und das ist nicht viel! Okay, wenn man aufpasst, kriegt man mit (64k-1) Offset plus (64k-1) Länge eines Eintrags insgesamt (128k-2) hin. Ist aber auch nicht wirklich üppig.
Das Konzept ist also noch ausbaufähig bzw. zeigt noch Optimierungspotential. ;-)
Ciao,
Martin
Husten kann böse Folgen haben.
Besonders im Kleiderschrank.