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/)
-   -   ZIP File names memory leak (https://www.delphipraxis.net/204542-zip-file-names-memory-leak.html)

tumo 5. Jun 2020 17:59

AW: ZIP File names memory leak
 
@Uwe Raabe
Jup, das ist es. Ich hab 10.3.1

@dataspider
Gut zu wissen. War jetzt beim Beispiel nicht meine Priorität.

@Moombas
Ändert nichts, das Free wird ja so oder so aufgerufen.

@Rolf Frei
Zur Kenntnis genommen. Noch mehr Arbeit beim überfliegen alter Projekte :/

Moombas 8. Jun 2020 07:03

AW: ZIP File names memory leak
 
Zitat:

Zitat von tumo (Beitrag 1466563)
@Moombas
Ändert nichts, das Free wird ja so oder so aufgerufen.

Wenn ich mich nicht irre, ist deine Aussage nicht richtig. Es wird nur mit aufgerufen, wenn es vorher keinen "Fehler" (Exception) gab.
Wenn du es in einem try...finally Block packst wird es jedoch definitiv immer ausgeführt: https://de.wikibooks.org/wiki/Progra...rwendet%20wird.

Korrigiert mich wenn ich da nun etwas falsch verstanden habe.

scrat1979 8. Jun 2020 13:04

AW: ZIP File names memory leak
 
Zitat:

Zitat von Moombas (Beitrag 1466685)
Zitat:

Zitat von tumo (Beitrag 1466563)
@Moombas
Ändert nichts, das Free wird ja so oder so aufgerufen.

Wenn ich mich nicht irre, ist deine Aussage nicht richtig. Es wird nur mit aufgerufen, wenn es vorher keinen "Fehler" (Exception) gab.
Wenn du es in einem try...finally Block packst wird es jedoch definitiv immer ausgeführt: https://de.wikibooks.org/wiki/Progra...rwendet%20wird.

Korrigiert mich wenn ich da nun etwas falsch verstanden habe.

Korrekt, das Free wird nur aufgerufen wenn es im finally-Block steht. Ohne Exception-Handling (also ohne try...finally) wird das Free nicht aufgerufen.

Andreas13 8. Jun 2020 13:25

AW: ZIP File names memory leak
 
Zitat:

Zitat von scrat1979 (Beitrag 1466744)
Zitat:

Zitat von Moombas (Beitrag 1466685)
Zitat:

Zitat von tumo (Beitrag 1466563)
@Moombas
Ändert nichts, das Free wird ja so oder so aufgerufen.

Wenn ich mich nicht irre, ist deine Aussage nicht richtig. Es wird nur mit aufgerufen, wenn es vorher keinen "Fehler" (Exception) gab.
Wenn du es in einem try...finally Block packst wird es jedoch definitiv immer ausgeführt: https://de.wikibooks.org/wiki/Progra...rwendet%20wird.

Korrigiert mich wenn ich da nun etwas falsch verstanden habe.

Korrekt, das Free wird nur aufgerufen wenn es im finally-Block steht. Ohne Exception-Handling (also ohne try...finally) wird das Free nicht aufgerufen.

Sorry, aber das stimmt nicht: Der Finally...End; - Block wird regulär immer ausgeführt, nur dann nicht, wenn die Routine vor dem Try durch eine Exit-Anweisung verlassen wird. Wenn zwischen dem Try ... Finally - Block ein Fehler passiert, dann wird der Finally...End; - Block auf jeden Fall noch ausgeführt, bevor die Routine beendet wird.
Gruß, Andreas

Moombas 8. Jun 2020 14:21

AW: ZIP File names memory leak
 
Ok, also ich denke das scrat und ich beide das durchaus so meinten, unter der Bedingung, das man kein explizites verlassen des Blocks (Exit) anstößt @Andreas13.

Aber unwichtig das zu erwähnen war es dennoch nicht.

scrat1979 8. Jun 2020 14:49

AW: ZIP File names memory leak
 
Zitat:

Zitat von Andreas13 (Beitrag 1466749)
Zitat:

Zitat von scrat1979 (Beitrag 1466744)
Zitat:

Zitat von Moombas (Beitrag 1466685)
Zitat:

Zitat von tumo (Beitrag 1466563)
@Moombas
Ändert nichts, das Free wird ja so oder so aufgerufen.

Wenn ich mich nicht irre, ist deine Aussage nicht richtig. Es wird nur mit aufgerufen, wenn es vorher keinen "Fehler" (Exception) gab.
Wenn du es in einem try...finally Block packst wird es jedoch definitiv immer ausgeführt: https://de.wikibooks.org/wiki/Progra...rwendet%20wird.

Korrigiert mich wenn ich da nun etwas falsch verstanden habe.

Korrekt, das Free wird nur aufgerufen wenn es im finally-Block steht. Ohne Exception-Handling (also ohne try...finally) wird das Free nicht aufgerufen.

Sorry, aber das stimmt nicht: Der Finally...End; - Block wird regulär immer ausgeführt, nur dann nicht, wenn die Routine vor dem Try durch eine Exit-Anweisung verlassen wird. Wenn zwischen dem Try ... Finally - Block ein Fehler passiert, dann wird der Finally...End; - Block auf jeden Fall noch ausgeführt, bevor die Routine beendet wird.
Gruß, Andreas

So war es gemeint :!::thumb:

Habe mich wohl missverständlich ausgedrückt.

himitsu 8. Jun 2020 14:51

AW: ZIP File names memory leak
 
Egal ob Goto, Exit, Exception oder sonstwie, das Finaly wird immer ausgeführt.
(bei Delphi-Referenz durchsuchenGoto sollte der Compiler es verbieten, dass man in/aus einem Try-Finally/Except springt)

Einzig beim Delphi-Referenz durchsuchenHalt bzw. MSDN-Library durchsuchenTerminateProcess ist alles zuspät.

Andreas13 8. Jun 2020 15:04

AW: ZIP File names memory leak
 
Zitat:

Zitat von himitsu (Beitrag 1466764)
..Egal ob Goto, Exit, Exception oder sonstwie, das Finaly wird immer ausgeführt...

Stimmt nur beding, denn wenn Du Exit vor Try hast, wird der Finally-Block nicht ausgeführt.
Andreas

himitsu 8. Jun 2020 15:06

AW: ZIP File names memory leak
 
Zitat:

Zitat von Andreas13 (Beitrag 1466767)
Zitat:

Zitat von himitsu (Beitrag 1466764)
..Egal ob Goto, Exit, Exception oder sonstwie, das Finaly wird immer ausgeführt...

Stimmt nur beding, denn wenn Du Exit vor Try hast, wird der Finally-Block nicht ausgeführt.
Andreas

Ja kla, die Aussagen beziehen sich natürlich immer nur auf das im/zwischen Try-Fiually,
drum kommt auch ein Create vor das Try, was im Finally Free werden soll. (nachdem/wenn es erstellt wurde)


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:41 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