2009-05-16 11 views

Respuesta

11

La muestra de MSDN es incorrecta. La persona que llama se libera y entra/sale de bstrs. Si está dentro/fuera, debe pasar nulo o un bstr válido. Si está fuera solo, no tiene que ser inicializado.

No es súper claro desde msdn com allocation rules, pero el código auxiliar del cliente asigna la memoria a valores de salida, por lo que desde el punto de vista de la persona que llama, el servidor sí lo hizo. ¿Quién más puede liberarlo sino la persona que llama?

+1

Siempre me ha parecido muy conveniente usar '_bstr_t' en lugar de tratar con' BSTR' directamente. – wilx

+0

sí, pero no todos están dispuestos a quedarse en Visual Studio. –

9

Tony tiene razón, pero yo quería ampliar su respuesta. La situación no se limita a un BSTR. La persona que llama es responsable de liberar cualquier memoria que se devuelva a través de los parámetros out o in/out.

Cuestiones relacionadas