AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi SetLength(DynArray,0) gibt den speicher nicht frei
Thema durchsuchen
Ansicht
Themen-Optionen

SetLength(DynArray,0) gibt den speicher nicht frei

Ein Thema von DelTurbo · begonnen am 6. Mär 2020 · letzter Beitrag vom 7. Mär 2020
Antwort Antwort
Seite 1 von 2  1 2      
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.248 Beiträge
 
Delphi 2007 Architect
 
#1

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

  Alt 6. Mär 2020, 14:26
Mit dem Proccess Explorer von Sysinternals sehe ich auch das der Speicher nicht mehr Freigeben wird.
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.248 Beiträge
 
Delphi 2007 Architect
 
#2

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

  Alt 6. Mär 2020, 14:32
Nachtrag: Das gleiche mit Freepascal unter Unix. Überprüft mit htop.
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
DenkDirNix

Registriert seit: 13. Dez 2018
77 Beiträge
 
Delphi 11 Alexandria
 
#3

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

  Alt 6. Mär 2020, 14:33
Die Strings müssen auch per User-Code freigegeben werden.
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.248 Beiträge
 
Delphi 2007 Architect
 
#4

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

  Alt 6. Mär 2020, 14:36
Die Strings müssen auch per User-Code freigegeben werden.
Wie gebe ich die Frei? Auch mit z.b. SetLength(EMailData[i].Subject,0)?
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
DenkDirNix

Registriert seit: 13. Dez 2018
77 Beiträge
 
Delphi 11 Alexandria
 
#5

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

  Alt 6. Mär 2020, 14:38
Nö, ganz billig mit
Code:
Subject := '';
SendName := ''
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#6

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

  Alt 6. Mär 2020, 14:37
Versuch die Dinger mal mit Dispose vorher freizugeben.

Ich habe auch sowas wie du irgendwo und ich nutze nur Dispose. Danach noch SetLength. Das mit den Strings halte ich für Unsinn.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.052 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#7

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

  Alt 6. Mär 2020, 14:40
Die Strings müssen auch per User-Code freigegeben werden.
Was? Unfug, managed Types in Records werden implizit finalisiert, wenn das Array resized wird.

Ich durchlaufe dann erst eine Schleife und gebe die TStringList mit .Free wieder frei.
Nur, damit es am Ende nicht an einem kleinen fehlenden s liegt - da sind 2mal TStringList in deinem Record, die gibst du beide frei, ja?
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#8

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

  Alt 6. Mär 2020, 14:40
Zitat:
Was? Unfug
Meine Rede. So einen Quatsch habe ich auch noch nirgendwo gelesen.

Einfach die Record-Einträge mit Dispose vernichten und dann die Liste freigeben oder wenn du ein Array hast das auf 0 setzen.
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.248 Beiträge
 
Delphi 2007 Architect
 
#9

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

  Alt 6. Mär 2020, 14:41
Klappt auch nicht. Es wird auch wesentlich mehr speicher belegt als in den zwei Strings ist.
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#10

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

  Alt 6. Mär 2020, 14:43
Kommentier mal alles bis auf einen einzigen String in deinem Record und lass dann alles laufen.
Kommentier vorher aber auch alle Vorkommen der vorher kommentieren Datentypen überall.

Ich habe langsam den Eindruck, dass das Problem woanders ist.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 09:45 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