You missed, from your own link, "BSTRs are allocated using COM memory allocation functions, so they can be returned from methods without concern for memory allocation."?
Now what does that mean.........................

COM memory is kind of reference counted by the COM marshaler (trust me on that one, otherwise you need to read at least "Essential COM" by Don Box, I won't torture you with the real stuff - yes, there is worse to come if you insist...)
Just use unicodestring.