Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi SetLength(DynArray,0) gibt den speicher nicht frei (https://www.delphipraxis.net/203636-setlength-dynarray-0-gibt-den-speicher-nicht-frei.html)

Stevie 6. Mär 2020 16:00

AW: SetLength(DynArray,0) gibt den speicher nicht frei
 
FastMM4 von Github holen, einbinden, FullDebugMode in den Projektoptionen bei den Conditional defines hinzufügen, dafür sorgen, dass neben der exe die FullDebugMode.dll liegt (ist im FastMM4 Repo mit dabei). Dann landet ein detailiertes log in txt Format neben der exe, wo ein Callstack für jede geleakte Allokation aufgelistet ist.

DieDolly 6. Mär 2020 16:00

AW: SetLength(DynArray,0) gibt den speicher nicht frei
 
Wenn du nichts weiter installieren willst und auch kein FastMM und sonst was (weniger Stress) , dann würde ich den Code komplett durchgehen.
Zum Beispiel das Programm starten, nichts machen und wieder schließen. Wenn dann beispielsweise schon Leaks kommen könnte man in dem Code suchen der ausgeführt wird, wenn man das Programm startet und beendet.

DelTurbo 6. Mär 2020 16:03

AW: SetLength(DynArray,0) gibt den speicher nicht frei
 
Danke erstmal. Ich denke ich schaue mir mal das FastMM4 an. Kann ja nicht so schwer sein, hoffe ich.

Netten gruß an euch und schönes Wochenende.

haentschman 6. Mär 2020 17:09

AW: SetLength(DynArray,0) gibt den speicher nicht frei
 
Moin...:P

Warum als Record und nicht als Klasse? :gruebel: PS: Ich mag keine Records. :oops: :wink:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages,
  System.SysUtils, System.Variants, System.Classes, System.Generics.Collections, System.Generics.Defaults,
  Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs;

type
    TEmailData = class
    strict private
      FInUse: Boolean;
      FID: Integer;
      FHTML: TStringList;
      FTXT: TStringList;
      FSubject: string;
      FSendName: string;
    public
      constructor Create;
      destructor Destroy; override;
      property InUse: Boolean read FInUse write FInUse;
      property ID: Integer read FID write FID;
      property HTML: TStringList read FHTML write FHTML;
      property TXT: TStringList read FTXT write FTXT;
      property Subject: string read FSubject write FSubject;
      property SendName: string read FSendName write FSendName;
    end;

  TFormBlubb = class(TForm)
    procedure FormShow(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    FEMailDataList: TObjectList<TEmailData>;
  public

  end;

var
  FormBlubb: TFormBlubb;

implementation

{$R *.dfm}

{ TEmailData }

constructor TEmailData.Create;
begin
  FHTML := TStringList.Create;
  FTXT := TStringList.Create;
end;

destructor TEmailData.Destroy;
begin
   FTXT.Free;
   FHTML.Free;
  inherited;
end;

{ TFormBlubb }

procedure TFormBlubb.FormCreate(Sender: TObject);
begin
  FEMailDataList := TObjectList<TEmailData>.Create;
end;

procedure TFormBlubb.FormDestroy(Sender: TObject);
begin
  FEMailDataList.Free;
end;

procedure TFormBlubb.FormShow(Sender: TObject);
var
  EmailData: TEmailData;
begin
  // Beispiele :-)

  // einfügen
  EmailData := TEmailData.Create;
  EmailData.InUse := True;
  // usw.
  FEMailDataList.Add(EmailData);

  // leeren
  FEMailDataList.Clear;
end;

end.
Link: http://docwiki.embarcadero.com/Libra...ns.TObjectList

:warn: Keine MemoryLeaks mehr. 8-)

DieDolly 6. Mär 2020 17:09

AW: SetLength(DynArray,0) gibt den speicher nicht frei
 
Zitat:

Warum als Record und nicht als Klasse?
Ich selber benutze für sowas auch Records, weil die in der Autovervollständigung nicht diesen völlig unnötigen Ballast haben.

haentschman 7. Mär 2020 05:13

AW: SetLength(DynArray,0) gibt den speicher nicht frei
 
Moin...:P
[OT]
Zitat:

weil die in der Autovervollständigung nicht diesen völlig unnötigen Ballast haben
Kannst du das mal erklären? :gruebel:
[\OT]


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:29 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz