Ich schreibe grade an einer Dx Anwendung. Beim Beenden der Anwendung werden schön sauber die objekte "Release()"-t. Release gibt immer die anzahl der noch offenen Referenzen zurück.
Und die ist nur beim Direct3D objekt nicht 0. Wenn ich dann einfach auf blöd solange Release wie nicht 0 zurückgegeben wird, ist alles zu spät: Das Härteste war ein Bluescreen "Das Betriebssystem wird gestoppt. Starten sie den Rechner neu."
Seltsamerweise funktioniert das Programmende mit verbleibenden Referern sauber.
Wann wird den ein COM objekt wirklich freigegeben? wenn keine Referer übrig sind, oder?
Kann man irgendwie die Typen der Refernzierenden objekte bestimmen?
Viel Text, ich weiß! Danke fürs lesen und antworten!
Dreamforger
Programmieren - alles kontrollieren 4.940 Themen, 20.676 Beiträge
das com objekt wird dann freigegeben, wenn der reference count auf null zurueckgegangen ist, und die com library somit keine weiteren referenzen mehr sieht. nachdem man vom eigenen programm aus nicht sehen kann wer da wo sonstnoch das objekt benutzt muss man sich nur um den eigenen referenz-count bemuehen: der rest ist aufgabe von com. m.a.w.: du musst nur deine eigenen referenzen frei geben: das bedeutet aber nicht automatisch, das das objekt nicht mehr von sonstwo referenziert und freigegeben wird.
WM_HOPETHISHELPS
thomas woelfer