Hallo,
ich will wie in dem vorherigen Artikel eine Struct in eine Datei schreiben, allerdings soll sie schon binär sein, also man soll die Integers später nicht lesen können.
Ich hab in einem Buch auch ein Bespiel mit fwrite gefunden, allerdings hat mich gewundert, das alle structs die in eine Datei geschrieben werden sollten so eine Kennung aufwiesen:
#pragma pack(push, 1)
Ich hab mal gegoogelt und herausgefunden, dass so eine Struct im RAM ausgerichtet wird und deshalb diese Beispielstruct nicht 9 Byte im Speicher belegt sondern 12! Mit diesen Pragma Direktiven wurde die Byte Zahl wieder auf 9 Byte reduziert. Benutzt man deshalb diese Direktiven, damit die Dateien, die gespeichert werden sollen nicht unnötig groß werden?
Ich hab auch unter Mircosoft geguckt, hab es aber nicht richtig verstanden, wo ist der Unterschied zwischen:
#pragma pack(push, 1)
struct x { int a; char b; int c; };
#pragma pack(pop)
und
#pragma pack(1)
struct x { int a; char b; int c; };
Vielen Dank für eine Antwort, viele Grüße
Andreas