Ich verwende ComPtr (Microsoft :: WRL), um einige DirectX11-Ressourcen zu verwalten. Wie kann ich es manuell freigeben?
Die "ReleaseAndGetAddressOf" Methode, wenn ich richtig verstehe, befreit nur den Zeiger und nicht die Ressource selbst (die zurückgegeben wird), und ich bin mir nicht sicher über die "Reset" -Methode.
Die einzigen Alternativen, die ich mir vorstellen kann, sind das manuelle Aufrufen des Zeigerdestruktors oder das Abrufen des rohen Zeigers von "ReleaseAndGetAddressOf", der "Release" aufruft, was ich vermeiden möchte.
Der Quellcode für WRL wird zur Verfügung gestellt, werfen Sie einen Blick auf include / winrt / wrl / client.h. Der eingebettete COM-Zeiger (ptr_ member) wird von der Funktion InternalRelease () freigegeben. Machen Sie eine der folgenden Möglichkeiten, um den Zeiger geeignete Kandidaten freizugeben:
Wenn Sie also nullptr zuweisen oder Reset () aufrufen, sollten Sie sich entscheiden. Oder verwenden Sie es überhaupt nicht, wenn Sie nur den Schnittstellenzeiger selbst verwalten möchten, es ist sicherlich nicht erforderlich, ComPtr zu verwenden.