2 Stimmen

Verwendung von GetGuiResources

Ist es eine gute Idee, die GetGuiResources(GetCurrentProcess(), GR_GDIOBJECTS) zu Beginn von WinMain und vor der letzten Rückkehr, um GDI-Lecks oder, genauer gesagt, Objekte zu entdecken, die ich vergessen habe freizugeben?
Außerdem frage ich mich gerade, warum der erste Aufruf in meinem Programm Folgendes zurückgibt 4 wenn es noch kein Fenster gibt.

2voto

Stefan Punkte 42586

In den meisten Situationen reicht es aus, wenn Sie Prozess-Explorer . Lassen Sie das Fenster geöffnet, in dem die GDI-Handles Ihres Prozesses angezeigt werden (klicken Sie mit der rechten Maustaste auf die Spalten, wählen Sie "Select Columns" und aktivieren Sie dann das Kontrollkästchen "GDI Objects" auf der Registerkarte "Process Memory").

Beobachten Sie während der Ausführung Ihrer Anwendung die Anzahl der GDI-Handles - wenn sie ansteigt und nicht mehr zurückgeht, wissen Sie, dass Sie ein Leck haben.

1voto

Hans Passant Punkte 894572

Der Code mit diesem Artikel im MSDN-Magazin bot eine elegante Möglichkeit zur Fehlersuche bei GDI-Handle-Lecks. Leider scheint der Quellcode nicht mehr verfügbar zu sein...

0voto

Andy Punkte 29060

Dadurch erfahren Sie zwar, ob Sie GDI-Objekte ausgelaufen sind, aber nicht, welche GDI-Objekte Sie ausgelaufen sind. In einem nicht-trivialen Programm, ich sehe nicht, dies sehr viel helfen.

Wenn Sie GDI-Objekte nachverfolgen wollen, gibt es meines Wissens nach einige Leistungszähler, die die Anzahl der GDI-Objekt-Handles anzeigen, die derzeit in einem Prozess zugeordnet sind. Sie können dies im Laufe der Zeit beobachten, um eine bessere Vorstellung davon zu bekommen, wo Ihr Programm undicht ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X