Moin.
MetaData m1 = (MetaData)malloc(sizeof(MetaData));
Korrekt wäre wohl irgendwie sowas wie:
MetaData *m1 = (MetaData *) malloc (sizeof (MetaData));
Nein, denn
typedef struct metadata *MetaData;
d.h. korrekt wären
MetaData m1 = malloc(sizeof(*m1));
oder
MetaData m1 = malloc(sizeof(struct metadata));
Hier sieht man, warum es nicht unbedingt eine gute Idee sein muss, den Variablentyp mit Hilfe von typedef
s zu verschleiern.
Und noch eine Bemerkung: Das casting des Rückgabewerts von malloc()
ist ein C++-Idiom: In C werden void \*
implizit bei der Zuweisung konvertiert.
Christoph