sizeof

sizeof ist ein Operator in C, der die Größe eines Datentyps oder Ausdrucks in Bytes liefert.

Beispiele:

sizeof(int)
sizeof(mystruct)
sizeof(variable)
sizeof([[pointer]])

Struct vs. Pointer

typedef struct mystruct {
    int zahl1;
    int zahl2;
    int zahl3;
} mystruct;

mystruct test1;
mystruct *test2 = malloc(sizeof(mystruct));

Dann gilt auf vielen Systemen:

sizeof(mystruct) == 12
sizeof(test1) == 12
sizeof(test2) == 8   // auf 64-Bit-Systemen

Grund:

Für das referenzierte Objekt wäre korrekt:

sizeof(*test2)

Typischer Fehler

Bei dynamischer Speicherreservierung versehentlich nur Pointergröße reservieren:

malloc(sizeof(test2)); // falsch, reserviert nur Pointergröße

Besser:

malloc(sizeof(*test2));