warum wird dieses objekt gelöscht?



  • ok nachdem mein anderer thread verbuggt ist habe ich den code mal ins pastebin gepackt:

    http://pastebin.com/d5ae6e401

    ursprüngliche frage:

    ich habe ein struct, welches so aussieht:

    struct ChainPiece
    {
        Particle par;
        ChainPiece *prev;
        ChainPiece *next;
    };
    

    jetzt erstelle ich ein anfangs und endstück:

    ChainPiece first;
    ChainPiece last;
    last.prev = &first;
    first.next = &last;
    

    jetzt erstelle ich ein zwischenelement:

    void createParticle(int x, int y, double vx, double vy, char type)
    {
        ChainPiece tmp;
        tmp.par.p.x = x;
        tmp.par.p.y = y;
        tmp.par.v.x = vx;
        tmp.par.v.y = vy;
    
    //    tmp.par.id = empty[lastEmpty];
        tmp.par.type = type;
        raster[x][y][type] = &tmp;
    	tmp.next = &last;
    	tmp.prev = last.prev;
        last.prev->next = &tmp;
        last.prev = &tmp;
    }
    

    diese zwischenelemente scheinen aber gleich nach der funktion wieder freigegeben zu werden... sprich wenn ich später in einer anderen funktion folgendes mache:

    ChainPiece *cp = first.next;
        while (cp != &last)
        {
            cp->par.p.x += cp->par.v.x;
            cp->par.p.y += cp->par.v.y;
    [...]
    

    krieg ich für den inhalt von cp nen lesefehler 😕 warum ?



  • Ich denk mal, daß das daran liegt, daß lokale Variablen nach dem
    Funktionsaufruf sterben. Das Zauberwort ist static.
    Aber dann hättest du immer noch nur jeweils ein Listen-Element, und
    das ist wahrscheinlich nicht gut. Deshalb: man: malloc.



  • edit: danke, problem gelößt


Anmelden zum Antworten