C
BorisDieKlinge schrieb:
das heist ohne "#pragma pack(1)" ist nicht gewährlieste, da die bytes ohne lückenhinter einander liegen??
Richtig - ohne Packing-Einstellungen kann der Compiler Füll-Bytes einschieben, um die einzelnen Elemente an passenden Speicheradressen auszurichten. In deinem Fall hast du vermutlich Glück, weil die Ausrichtung aller Elemente glatt aufgeht, in anderen Fällen hättest du da schon Probleme.
Nehmen wir mal ein Anwendungsbeispiel:
struct BITMAPFILEHEADER
{
WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
};
Das zweite Element ist ein DWORD (also 4 Byte groß) und sollte optimalerweise an einer durch 4 teilbaren Adresse beginnen. Da davor aber nur ein 2 Byte großes Element steht, würde der Compiler hier 2 Füll-Bytes dazwischen schieben, wenn du ihm das nicht verbietest.