Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi EOutOfResources erzeugt Speicherleck (https://www.delphipraxis.net/156523-eoutofresources-erzeugt-speicherleck.html)

littleDave 5. Dez 2010 21:50

AW: EOutOfResources erzeugt Speicherleck
 
Die EOutOfResources-Exception müsste im Constructor automatisch die "AllowFree"-Variable auf True setzen oder nicht von EHeapException abgeleitet sein. Diese Exception soll ja darauf hinweisen, dass keine Handles mehr zur Verfügung stehen - jedoch braucht eine Exception an sich kein Handle und sollte somit eigentlich ohne Probleme erstellt werden können (im Gegensatz zur EOutOfMemory-Exception) - auch wenn das System keine Handles mehr hat.

himitsu 5. Dez 2010 21:55

AW: EOutOfResources erzeugt Speicherleck
 
Auch EOutOfMemory ist schon fehlerhaft implementiert.

Bei diesen Exceptions müßten nicht nur die globalen Exceptionobjekte schon erstellt worden sein, sondern auch schon das ganze Meldungsfenster.

Bei EOutOfResources braucht man zwar für das Exceptionobjekt kein Handle, aber für das Fehlerfenster schon.

littleDave 5. Dez 2010 22:00

AW: EOutOfResources erzeugt Speicherleck
 
Als fehlerhaft würde ich das nicht bezeichnen, denn es muss ja nicht unbedingt ein Fester geben (Console-Anwending, Service, etc.). Daher finde ich diese pauschale Bezeichnung falsch. Zudem ist bei diesen Fehlern wichtig, dass man vorher nicht mehr benötigte Resourcen freigibt, bevor eine Meldung angezeigt wird.

himitsu 5. Dez 2010 22:04

AW: EOutOfResources erzeugt Speicherleck
 
EOutOfResources ist in Classes deklariert, wärend EHeapException in SysUtils deklariert ist.
Da AllowFree aber als Privat deklariert ist, kann man externe Nachkommen von EHeapException überhaupt nicht ordnungsgemäß verwenden.

littleDave 5. Dez 2010 22:07

AW: EOutOfResources erzeugt Speicherleck
 
Klar, die Variable gehört in protected - ich meinte eher, dass es falsch wäre, das Meldungsfenster gleich mit zu initialisieren.

Schorschi5566 5. Dez 2010 22:15

AW: EOutOfResources erzeugt Speicherleck
 
So, jetzt ist die Meldung weg. Super und nochmals danke. :)

Warum überhaupt eine EOutOfResources kommt, ist mir zwar immer noch nicht wirklich klar aber zumindest bleiben die Exceptions jetzt nicht mehr im Speicher hängen.

In meinem Fall werden doch nur einige GDI-Handles angefordert. Wird der dafür nötige Speicher ebenfalls gleich mitbestellt (dann wäre es logisch) oder wie muss man sich das vorstellen?

Das Programm hat zur Laufzeit zwischen 100-120 der GDI-Handles, Tendenz gleichbleibend.

Luckie 6. Dez 2010 00:26

AW: EOutOfResources erzeugt Speicherleck
 
Also ich halte es immer noch für falsch bewusst in eine Exception reinzulaufen. Ich meine, ich lasse Autos ja auch nicht bewusst an einer Ampel Unfälle bauen und stelle einen Abschleppwagen da neben, um die Wracks weg zu räumen.

Bummi 6. Dez 2010 07:56

AW: EOutOfResources erzeugt Speicherleck
 
@Luckie
Du bist nicht der Einzige :cheers:
ist trotzdem interessant dieses Thema zu verfolgen.

Schorschi5566 6. Dez 2010 09:08

AW: EOutOfResources erzeugt Speicherleck
 
Zitat:

Zitat von Luckie (Beitrag 1066428)
Ich meine, ich lasse Autos ja auch nicht bewusst an einer Ampel Unfälle bauen und stelle einen Abschleppwagen da neben, um die Wracks weg zu räumen.

Na ja, das sind dann die, die 10 Meter vor der Ampel anhalten. :mrgreen:


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