void in struct casten



  • Hallo, ich habe mehrere structs und will diese in eine Liste speichern.

    ich hab in meiner struct liste einen Daten Teil der einfach ein void *ptr ist.

    Wenn ich dann die liste ausgeben will und den pointer wieder in ein struct casten will, bekomm ich bei Visual Studio c++, Zugriffsverletzung beim Lesen.

    struct line *test = (struct line *) malloc(sizeof(lineTyp));
    test = (struct line*)temp->inhalt;
    

    Ich hoffe die Info reicht für eine Hilfe, danke.



  • Nein, die Info reicht nicht. Der Code macht auch gar keinen Sinn. Erst reservierst du Speicher für test und dann verwirfst du das gleich wieder und zauberst ein ominöses temp hervor...

    Und wie so ein malloc-Aufruf aussehen sollte steht hier.



  • wieso verwirf ich den Speicher, ich weiße doch nur nen neuen Wert zu. Wie macht man das den sonst?

    Danke.



  • Weil du test überschreiben tust, kommst du nicht mehr an die Speicheradresse ran.



  • ehmkey schrieb:

    wieso verwirf ich den Speicher, ich weiße doch nur nen neuen Wert zu.

    Vergleiche:

    int a = 12;
    a = 25;
    

    Würdest Du hier auch sagen "ich weise der 25 den neuen Wert 12 zu" oder "ich verwerfe die 12 und weise a den neuen Wert 25 zu?"


Anmelden zum Antworten