![]() |
Speicherprobleme?
Wenn ich eine Funktion in folgender Weise implementieren werde, wäre das für meinen Speicher eine Last? Oder wird der Speicher freigegeben auch wenn ich "Free" nicht mehr aufrufe?
Delphi-Quellcode:
Ich sehe "result" als eine lokale Variabile, der betroffen Speicher müsste also wieder freigegeben werden, sogleich die Funktion zu Ende ist, oder ... ??!!
function GetAllItems(a: Integer): TStringList;
begin try result := TStringList.Create; .... result.Add(...); finally //result.free; //mache also keinen Free, um das Ergebnis nicht zu verlieren ?!!! end; |
Re: Speicherprobleme?
Bei sowas hat es sich bisher immer als sinnvoller erwiesen, dass der Aufrufer, das entsprechende Objekt bereitstellt und der Prozedur übergeben wird. Dann kommt man gar nicht in Verlegenheit sich den Kopf darüber zu zerbrechen, wer denn nun das Objekt wieder freigeben muss.
|
Re: Speicherprobleme?
Wie wäre es damit?
Delphi-Quellcode:
Ohne Free wird hier nichts mehr freigegeben.
function GetAllItems(ASaveTo: TStringList; a: Integer);
begin ... ASaveTo.Add(...); end; |
Re: Speicherprobleme?
Besser
Delphi-Quellcode:
damit man beliebige TStrings-Abkoemmlinge (eben auch TStringlist) uebergeben kann.
function GetAllItems(ASaveTo: TStrings; a: Integer);
begin ... ASaveTo.Add(...); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:33 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