Christian Seiler: (C) seltsamer calloc-Fehler + Pointerfragen

Beitrag lesen

Hallo,

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

Ohne mir das jetzt genauer angesehen zu haben: Die Zeile ist garantiert falsch. Wenn Du etwas mit sizeof(MetaData) allozierst, dann gibt Dir malloc() einen Zeiger auf einen Speicherbereich zurück, der die Größe des Objekts MetaData hat - aber den kannst Du eigentlich nur in einen Zeiger auf MetaData casten und nicht auf MetaData selbst... Und wegen des Casts haut Dir das Dein Compiler natürlich nicht um die Ohren.

Korrekt wäre wohl irgendwie sowas wie:

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

Und dann halt alles andere entsprechend ändern.

Viele Grüße,
Christian

--
Mein "Weblog" [RSS]
Using XSLT to create JSON output (Saxon-B 9.0 for Java)
»I don't believe you can call yourself a web developer until you've built an app that uses hyperlinks for deletion and have all your data deleted by a search bot.«
            -- Kommentar bei TDWTF