Ich untersuche DirectShow-Beispiele von Windows SDK. Viele der Klassen verfügen über einen nicht standardmäßigen Konstruktor. Wie heißen diese Konstruktoren? Wer liefert Argumente?Warum COM-Klassen Konstruktor benötigen? Wie verwende ich COM-Klasse ohne Registrierung?
Kann ich diese Klassen in C++ - Programmen ohne Registrierung verwenden? Wenn ja, könnte ich den Klassenkonstruktor direkt verwenden.
Wenn ich eine COM-Klasse ohne Registrierung verwenden, was im folgenden Code-Fragment passiert:
Foo * foo = new Foo(.....); // note, not using CoCreateInstance
Bar * bar = foo->QueryInterface(...);
bar->Release();
delete foo; // CRASH?
Vielen Dank!
Sie wissen nicht, wie 'Release' im allgemeinen Fall implementiert wird (es könnte sogar ein No-Op sein, oder einen anderen Speicherzuordner verwenden). Hier wird es wahrscheinlich "löschen". Sie sollten 'CoCreateInstance' +' Release' verwenden, dies ist die einzig sichere Sache. –