Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Speicherprobleme? (https://www.delphipraxis.net/84828-speicherprobleme.html)

conti 22. Jan 2007 14:02


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:
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;
Ich sehe "result" als eine lokale Variabile, der betroffen Speicher müsste also wieder freigegeben werden, sogleich die Funktion zu Ende ist, oder ... ??!!

Luckie 22. Jan 2007 14:07

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.

Bernhard Geyer 22. Jan 2007 14:07

Re: Speicherprobleme?
 
Wie wäre es damit?

Delphi-Quellcode:
function GetAllItems(ASaveTo: TStringList; a: Integer);
begin
  ...
  ASaveTo.Add(...);
end;
Ohne Free wird hier nichts mehr freigegeben.

Robert Marquardt 22. Jan 2007 14:12

Re: Speicherprobleme?
 
Besser
Delphi-Quellcode:
function GetAllItems(ASaveTo: TStrings; a: Integer);
begin
  ...
  ASaveTo.Add(...);
end;
damit man beliebige TStrings-Abkoemmlinge (eben auch TStringlist) uebergeben kann.


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