![]() |
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; |
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 22:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz