Detach und Attach Prozess
-
Hallo,
kann mir jmd von euch erklären was es sich mit dem Detach und Attach von Objecten auf sich hat?
CFont f; f.CreateFont(...); c_InputData.SetFont(&f); f.Detach();
CFont f erstellt ein Objekt der CFont Klasse. Dann wird eine Schrift mit xyz als Parameter erstellt und auf eine Listbox oder ähnliches mit SetFont gesetzt.
Irgendwie hab ich gelesen, dass aber hier bereits eine wichtige Referenz nicht vorhanden ist, und deshalb man f.Detach() anwenden muss...
Aber passiert hier genau?
Gruß
Frank
-
Das was hier passiert ist in jedem Falle falsch. Durch diesen Code wird das Font Objekt gar nicht entsorgt!
Attach nimmt man, wenn man ein Handle hat und gerne die MFC Wrapper verwenden will. Durch den Attach wird aber auch das Handle entsorgt, wenn der Destruktor aufgerufen wird. Will man das nicht muss man das Handle vom Objekt lösen, das macht Detach. In dem Fall (wie oben) ist man dann aber für die korrekte Entsorgung selbst verantwortlich.