Einzelnen Beitrag anzeigen

Akku

Registriert seit: 27. Jan 2006
29 Beiträge
 
#1

warum wird hier der Speicher wieder freigegebem??

  Alt 19. Jun 2006, 22:32
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;
  Mit Zitat antworten Zitat