AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Array korrekt freigeben

Ein Thema von woodie · begonnen am 23. Sep 2025 · letzter Beitrag vom 23. Sep 2025
Antwort Antwort
woodie

Registriert seit: 30. Sep 2020
7 Beiträge
 
#1

Array korrekt freigeben

  Alt Heute, 14:39
Delphi-Version: 5
Hallo zusammen ich habe folgenden Code:

Code:
var AString := 'Test;1';
var AArray := AString.Split([';']);

//...

Setlength(AArray,0);
Finalize(AArray);
AArray:=nil;
Warum wird mir bei FastMM5 trotzdem ein Leak angezeigt? Was muss mit dem Array passieren, um den Leak zu unterbinden? oder ist die Split Funktion fehlerhaft?


Code:
A memory block has been leaked. The size is: 78

This block was allocated on 2025-09-23 15:28:03.379 by thread 10096, and the stack trace (return addresses) at the time was:
0096A473 [FastMM5.pas][FastMM5][FastMM_DebugGetMem_GetDebugBlock$qqrio][8039]
0096A53B [FastMM5.pas][FastMM5][FastMM_DebugGetMem$qqri][8075]
009478BA [System.pas][System][GetMem][4965]
0094CF9F [System.pas][System][NewUnicodeString][26083]
0094D1E0 [System.pas][System][UStrFromPWCharLen][26697]
0094E597 [System.pas][System][UStrCopy][32009]
009BADFF [System.SysUtils.pas][System.SysUtils][Sysutils.TStringHelper.InternalSplit][31746]
009BB040 [System.SysUtils.pas][System.SysUtils][Sysutils.TStringHelper.Split][31814]
009BAA52 [System.SysUtils.pas][System.SysUtils][Sysutils.TStringHelper.Split][31580]
01EE8B9C [Test.pas][Test][TTestItem.TestF1][1926]
  Mit Zitat antworten Zitat
Thaddy

Registriert seit: 23. Jan 2012
2 Beiträge
 
#2

AW: Array korrekt freigeben

  Alt Heute, 15:43
Setlength(AArray,0);
Finalize(AArray); // <---

Dass ist doppel: double free. Beide machen dasselbe.

Geändert von Thaddy (Heute um 15:46 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.223 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Array korrekt freigeben

  Alt Heute, 16:48
Vielleicht im Debugger noch einen der Strings in Visualizer gehabt? Da kann sowas passieren.

Sowas elementares wie String.Split(..) wird ja kaum kaputt sein.
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.321 Beiträge
 
Delphi 12 Athens
 
#4

AW: Array korrekt freigeben

  Alt Heute, 18:33
Setlength(AArray,0);
Finalize(AArray); // <---

Dass ist doppel: double free. Beide machen dasselbe.

Warum überhaupt freigeben (beide versionen)? Am Ende der Procedure ist es doch sowiso weg.

Auch würde ich nie auf die Idee kommen "AArray:=nil;" zu verwenden
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:30 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