Thema: Delphi Pointer Problem

Einzelnen Beitrag anzeigen

Muetze1
(Gast)

n/a Beiträge
 
#3

Re: Pointer Problem

  Alt 28. Feb 2005, 15:02
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
  Mit Zitat antworten Zitat