AGB  ·  Datenschutz  ·  Impressum  







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

Error 223

Ein Thema von Monday · begonnen am 27. Dez 2015 · letzter Beitrag vom 29. Dez 2015
Antwort Antwort
Monday

Registriert seit: 24. Aug 2012
103 Beiträge
 
FreePascal / Lazarus
 
#1

AW: Error 223

  Alt 28. Dez 2015, 14:29
Hallo,

unter Delphi benutzt ich FastMM4 zum Erkennen von Speicherlecks.
Lazarus hat doch bestimmt etwas ähnliches ?

Eine kurze Suche:

http://forum.lazarus.freepascal.org/...p?topic=5240.0

und
http://stackoverflow.com/questions/1...pascal-lazarus

Heiko
Das mit dem Heaptrc habe ich ausprobiert. Puh aber was mir das konkret sagen soll und welche Erkenntnisse ich daraus ziehen kann, weiß ich nicht, hatte mich damit noch nie beschäftigt...

Ich hatte soetwas in der Art bekommen. Allerdings viel länger und soweit ich gesehen habe, haben sich die Abschnitte immer wieder wiederholt:

Code:
Heap dump by heaptrc unit
110350 memory blocks allocated : 19827548/20238696
77987 memory blocks freed    : 8643622/8963072
32363 unfreed memory blocks : 11183926
True heap size : 14942208 (160 used in System startup)
True free heap : 1140880
Should be : 1595192
Call trace for block $0023FFE0 size 5
  $006DABAF TZSQLITECAPIPREPAREDSTATEMENT__BINDINPARAMETERS, line 518 of D:/lazarus/components/ZEOSDBO-7.1.2-stable/src/dbc/ZDbcSqLiteStatement.pas
  $006DB747  TZSQLITECAPIPREPAREDSTATEMENT__EXECUTEUPDATEPREPARED, line 657 of D:/lazarus/components/ZEOSDBO-7.1.2-stable/src/dbc/ZDbcSqLiteStatement.pas
  $0071026F TZABSTRACTRODATASET__EXECSQL, line 1568 of D:/lazarus/components/ZEOSDBO-7.1.2-stable/src/component/ZAbstractRODataset.pas
  $00440FFA TFORM1__BUTTON1CLICK, line 184 of unit1.pas
  $005481AE TCONTROL__CLICK, line 2711 of ./include/control.inc
  $00563D5F TBUTTONCONTROL__CLICK, line 54 of ./include/buttoncontrol.inc
  $0056445F TCUSTOMBUTTON__CLICK, line 169 of ./include/buttons.inc
  $00563C7A TBUTTONCONTROL__WMDEFAULTCLICKED, line 20 of ./include/buttoncontrol.inc
Call trace for block $05A57288 size 5
  $006DABAF TZSQLITECAPIPREPAREDSTATEMENT__BINDINPARAMETERS, line 518 of D:/lazarus/components/ZEOSDBO-7.1.2-stable/src/dbc/ZDbcSqLiteStatement.pas
  $006DB747  TZSQLITECAPIPREPAREDSTATEMENT__EXECUTEUPDATEPREPARED, line 657 of D:/lazarus/components/ZEOSDBO-7.1.2-stable/src/dbc/ZDbcSqLiteStatement.pas
  $0071026F TZABSTRACTRODATASET__EXECSQL, line 1568 of D:/lazarus/components/ZEOSDBO-7.1.2-stable/src/component/ZAbstractRODataset.pas
  $00440FFA TFORM1__BUTTON1CLICK, line 184 of unit1.pas
  $005481AE TCONTROL__CLICK, line 2711 of ./include/control.inc
  $00563D5F TBUTTONCONTROL__CLICK, line 54 of ./include/buttoncontrol.inc
  $0056445F TCUSTOMBUTTON__CLICK, line 169 of ./include/buttons.inc
  $00563C7A TBUTTONCONTROL__WMDEFAULTCLICKED, line 20 of ./include/buttoncontrol.inc
[...]
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Error 223

  Alt 28. Dez 2015, 14:41
Darum nimmt ja auch
Delphi-Quellcode:
bar := TBar.Create;
try
  
  if (something)
  then
    Exit;

finally
  bar.Free; // wird IMMER durchlaufen
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#3

AW: Error 223

  Alt 28. Dez 2015, 14:50
Was aber so nur bei lokalen Variablen funktioniert
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Error 223

  Alt 28. Dez 2015, 15:03
Was aber so nur bei lokalen Variablen funktioniert
Bei mir funktioniert das auch mit nicht lokalen Variablen.

Du willst aber wohl eher auf dangeling pointers raus.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#5

AW: Error 223

  Alt 28. Dez 2015, 15:07
OK, falsch ausgedrückt, ich meinte, dass das nur klappt, wenn die Instanz innerhalb derselben Methode erzeugt und wieder freigegeben werden soll (wo sollte man auch sonst den Ressourcenschutzblock hinsetzen?).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Monday

Registriert seit: 24. Aug 2012
103 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Error 223

  Alt 28. Dez 2015, 15:20
Darum nimmt ja auch
Delphi-Quellcode:
bar := TBar.Create;
try
  
  if (something)
  then
    Exit;

finally
  bar.Free; // wird IMMER durchlaufen
end;
Auch beim Exit?? Ich habe das noch nicht probiert. Ich dachte immer finally wird nur durchlaufen bei einem Fehler bzw. grundsätzlich schon wenn es bis zum Ende durchläuft. Und beim Exit wird der rest nicht mehr durchlaufen, auch beim finally?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#7

AW: Error 223

  Alt 28. Dez 2015, 15:26
Nicht finally mit except verwechseln. Ein Except-Block wird nur im Falle einer Exception durchlaufen, ein finally-Block hingegen immer.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.961 Beiträge
 
Delphi 12 Athens
 
#8

AW: Error 223

  Alt 29. Dez 2015, 07:31
Und beim Exit wird der rest nicht mehr durchlaufen, auch beim finally?
Der Rest hinter dem finally..end wird nicht durchlaufen, das im finally..end aber schon.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.352 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Error 223

  Alt 29. Dez 2015, 10:53
[etwas OT]
Zum finally gab es mal eine längere Diskussion: http://www.delphipraxis.net/160164-f...ewuenscht.html
[/etwas OT]
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  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 19:18 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