Thema: Delphi Leak verzweifelt gesucht

Einzelnen Beitrag anzeigen

Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#1

Leak verzweifelt gesucht

  Alt 4. Nov 2006, 15:57
Ich hab hier ein ziemlich konfuses Problem.

Wenn ich - bei absolut unverändertem Programmtext - die Compilier-Optimierung einschalte, passiert folgendes:

- Ein IsWindow-Aufruf, der ein meistens valides Window-Handle eines fremden Prozesses (nicht wirklch fremd, wird per shellexecute gestartet) bekommt, gibt immer false zurück -> Der Prozess, zu dem das Fenster gehört wird nicht geschlossen, da ich ja meine, er exisitiert nicht mehr
- Es gibt keine Memleaks

Wenn die Optimierung aus ist, folgendes:

- IsWindow wertet richtig aus, Anwendung wird geschlossen
- FastMM meldet "3x Unknown" als Memleaks

Ich hab jetzt einfach mal {$O-}/{$O+} um die Prozedur gelegt, in der der IsWindow-Aufruf stattfindet und die Optimierung global eingeschaltet.

Dann passiert meist letzteres - manchmal bleiben aber die Leaks aus...

Wo die Leaks jetzt genau sind, hab ich keine Ahnung - der Leakreport spricht immer von zwei Prozeduren, in denen habe ich aber nur jeweils einen Record, den Delphi von sich aus alloziieren und freigeben sollte...

Was mach ich jetzt? Die zwei Prozeduren poste ich gerne, aber ich glaub nicht, dass es was bringt.

EDIT: Es spielt bei dem ganzen noch ein solchermaßen erzeugtes Message-Only-Window mit:

Delphi-Quellcode:
  //create our own message window
  //Wnd := TWinControl.CreateParented(HWND_MESSAGE);
  Wnd := TWinControl.Create(nil);
  Wnd.ParentWindow := HWND_MESSAGE;
  Wnd.WindowProc := OnMessage;
Nur zur vollständigkeit...

EDIT: upsala... Da wurde aus "Compiler-Optimierung" "Kompilierung"
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat