smart punteros programming pointer inteligentes c++ com smart-pointers

c++ - punteros - smart pointer c programming



¿Cuál es la diferencia entre BSTR y_bstr_t? (3)

¿Alguien puede explicar la diferencia entre los tipos mencionados anteriormente y el uso de algunas muestras para explicar claramente la diferencia entre los dos?

¡Cualquier ayuda sería muy apreciada! Nota: esta pregunta es un spin-off de esta otra pregunta



BSTR es un puntero sin _bstr_t , mientras que _bstr_t es una clase que encapsula ese puntero.

Es la misma diferencia que char * vs. std :: string .


BSTR es el tipo de datos de cadena utilizado con COM.

_bstr_t es una clase contenedora que funciona como un puntero inteligente, por lo que liberará la memoria asignada cuando la variable se destruya o salga del alcance. _bstr_t también tiene recuento de referencias, que aumenta cada vez que pasa la variable _bstr_t por valor (evitando la copia innecesaria) y disminuye cuando ya no se usa. Cuando se destruyen todas las referencias, se libera la memoria asignada para la cadena.

Una alternativa al BSTR es el CComBSTR. También gestiona la memoria para el BSTR, pero no tiene recuento de referencias.