![]() |
Re: Speicherbereinigung von Strings
öhm...
Delphi-Quellcode:
soltle das nicht reichen?
PStringContainer = ^TStringContainer;
TStringContainer = record s: string; end; //string "sichern" New(MyPStringContainer); MyPStringContainer.s := 'bla'; //und dann record in ne liste packen. //string freigeben Dispose(MyPStringContainer); |
Re: Speicherbereinigung von Strings
Ja, aber dann könnte man sich den Record schenken und gleich nen String nehmen.
|
Re: Speicherbereinigung von Strings
Meine Hashmap speichert Pointer, und da wollte ich DGL-Luke's Version nehmen.
|
Re: Speicherbereinigung von Strings
Delphi-Quellcode:
type
PRecordType = ^TRecordType; TRecordType = record Name: string; Bla: string end; procedure Test(); var LRec: PRecordType; begin New(LRec); try LRec.Name := 'Name'; LRec.Bla := 'BlaBla'; MachWas(LRec); finally LRec.Name := ''; LRec.Bla := ''; Dispose(LRec); end; end; ...probiert es aus |
Re: Speicherbereinigung von Strings
Zitat:
|
Re: Speicherbereinigung von Strings
Hm, sry ist wohl doch nicht so wie ich es mir gedacht habe...hab es jetzt selbst nochmal gestestet und in diesem Fall entsteht kein Leak.
Wieso ich auf diese Idee gekommen bin....beim VirtualStringTree erzeugen Strings in einem PNodeData einen Memory Leak, wenn sie nicht im OnFreeNode auf leer gesetzt werden. Meine Annahme war, weil ich sehr viel mit dem VST arbeite, daß es bei Strings in Records immer so ist. Ein Test zeigte mir das Gegenteil. Es entstehen keine Leaks. Beim VST liegt es wohl daran, daß der Record untypisiert ist. Gruß T. |
Re: Speicherbereinigung von Strings
Zitat:
VST bekommt ja vom Inhalt und dessen Typen nichts mit ... du kastest den Typ ja auch erst außerhalb des VST. aber das ist überall so, wo der Typ nicht direkt angegeben ist und wo dieses dann nicht explizit bei der Freigabe beachtet wird. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:39 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