warum wird dieses objekt gelöscht?
-
ok nachdem mein anderer thread verbuggt ist habe ich den code mal ins pastebin gepackt:
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