Moin!
Pop gibt dir den Zeiger zurück den du beim hinzufügen angegeben hast - somit ist das anlegen mit new() speicherverschwendung --- du überschreibst den Zeiger auf diesen neuen Speicher ja durch das Pop und verlierst somit den Bezug auf diesen neuen Speicher und kannst ihn nie wieder freigeben - also ein typisches Speicherleck.
Delphi-Quellcode:
begin
PFieldID := CellQ.Pop;
FieldID.x := PFieldID^.x;
FieldID.y := PFieldID^.y;
FieldID.Wall := PFieldID^.Wall;
Dispose(PFieldID);
end;
/EDIT: Ganz vergessen:
Ja, es sollte ein Problem beim hinzufügen der Elemente sein. Das rausholen wie du es hier machst bzw. wie es mein korrigierter Quellcode macht (der nur kein Speicherleck hat, aber das gleiche macht) sollten kein Fehler produzieren - ausser die Daten in der Queue sind fehlerhaft. Daher: poste mal den Quellcode wo du den Queue befüllst.
MfG
Muetze1