Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi warum wird hier der Speicher wieder freigegebem?? (https://www.delphipraxis.net/71714-warum-wird-hier-der-speicher-wieder-freigegebem.html)

Akku 19. Jun 2006 21:32


warum wird hier der Speicher wieder freigegebem??
 
Hi,
ich hab Euch hier mal einen Auszug von meinem Code zusammengebastelt. Die "box" gehört eigentlich nicht in diesen Code, aber sie zeigt das Problem, das ich habe.

Und das ist das Folgende:

In dem Moment, in dem "new(box)" ausgeführt wird, ändert sich der Inhalt von dataTrack. Wenn ich danach der Box(ein record) auch noch Attribut zuweise, ändert er sich sogar noch stärker.

Ich hab keine Ahnung, wie das passieren kann, wenn ihr mir da weiterhelfen könntet, wär das wunderbar :)

Danke im Vorraus!

Gruß Max

Delphi-Quellcode:
Class function TDataStorage.CreateNewDataTrack_1D(n: Integer): PDataTrack;
var
  line: PLine;
  dataTrack: PDataTrack;
  p: PDoubleArray;
  box: PGrafXBox;
begin

  new(dataTrack);

  new(line);
  line^.N := n;
  getMem(p, n * sizeOf(Double));
  fillChar(p^, n * sizeOf(Double), 0);
  line^.data := p;
  dataTrack^.XLine := line;

  new(line);
  line^.N := n;
  getMem(p, n * sizeOf(Double));
  fillChar(p^, n * sizeOf(Double), 0);
  line^.data := p;
  dataTrack^.YLine := line;

  dataTrack^.dimension := 1;

  Result := dataTrack;

  new(box);
end;

Akku 19. Jun 2006 21:48

Re: warum wird hier der Speicher wieder freigegebem??
 
verdammt...sorry...ich hab einen Tag nach dem Fehler gesucht, und kaum hab ich das Problem online gestellt, finde ich den Fehler.... :)

Naja - hat auch was Gutes - jetzt ist's gelöst.

Falls jemanden interessiert:

Line ist eine Klasse...ich weiß nicht lachen - die Folge: ich hab keinen Konstruktor aufgerufen, und so passierte es, dass der Speicher nicht reserviert wird und wieder überschrieben werden kann.

Bis dann

Gruß Max


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:16 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz