Andreas Pflug: (C) seltsamer calloc-Fehler + Pointerfragen

Beitrag lesen

Wenn ich das richtig sehe, hast Du einen Strukturtyp
unter dem Namen

struct metadata

definiert und dann noch den Typ

MetaData

als Zeiger auf diesen Strukturtyp.
In Main.c definierst Du nun

  
    MetaData m1 = (MetaData)malloc(sizeof(MetaData));  

Wahrscheinlich wolltest Du hier einen Pointer m1 definieren,
der auf einen Speicherbereich zeigt, in dem sich
eine "metadata"-Struktur breitgemachen kann.
Das Problem dabei ist, dass sizeof(MetaData) hier nur
die Größe eines einzelnen Pointers wiedergibt, d. h. je nach
Betriebssystem 4 oder 8 byte. Was Du wolltest, ist
wahrscheinlich sizeof(metadata)?

Deine Struktur besteht ja aus zwei Pointern, daher
kann es sein, dass Dein Programm beim ersten
Funktions-Aufruf (d. h. Zugriff auf den ersten Pointer)
"zufällig" noch funktioniert und erst beim Setzen
des zweiten Pointers, der dann außerhalb des allozierten
Bereichs liegt, aussteigt.

Abgesehen davon würde ich versuchen, den Code etwas
zu entrümpeln. Es macht IMHO keinen Sinn, den
Funktionen setMetaDataBezeichnung(...) als Argument
einen Typ Pointer-auf-Pointer-auf-Struktur zu übergeben,
Pointer-auf-Struktur sollte völlig ausreichend sein.

MfG

Andreas