![]() |
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.
|
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. |
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. |
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:
Link:
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. ![]() :warn: Keine MemoryLeaks mehr. 8-) |
AW: SetLength(DynArray,0) gibt den speicher nicht frei
Zitat:
|
AW: SetLength(DynArray,0) gibt den speicher nicht frei
Moin...:P
[OT] Zitat:
[\OT] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:19 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