Com 谁拥有返回的BSTR?

Com 谁拥有返回的BSTR?,com,bstr,Com,Bstr,假设来自COM接口的方法返回BSTR值。我认为我必须释放它,对吗 上的代码示例不这样做 谁错了?MSDN样本错了。调用者释放出和输入/输出BSTR。如果输入/输出,则必须传入null或有效的bstr。如果它仅为out,则不必初始化它 从msdn的角度来看,这并不是非常清楚,但是客户端存根在out值上分配内存,所以从调用方的角度来看,服务器确实这样做了。除了打电话的人,还有谁能释放它呢?托尼是对的,但我想进一步说明他的答案。这种情况不仅限于BSTR。调用方负责释放通过out或in/out参数返回的

假设来自COM接口的方法返回BSTR值。我认为我必须释放它,对吗

上的代码示例不这样做


谁错了?

MSDN样本错了。调用者释放出和输入/输出BSTR。如果输入/输出,则必须传入null或有效的bstr。如果它仅为out,则不必初始化它


从msdn的角度来看,这并不是非常清楚,但是客户端存根在out值上分配内存,所以从调用方的角度来看,服务器确实这样做了。除了打电话的人,还有谁能释放它呢?

托尼是对的,但我想进一步说明他的答案。这种情况不仅限于BSTR。调用方负责释放通过out或in/out参数返回的任何内存

我总是发现使用
\u bstr\t
而不是直接处理
bstr
非常方便。是的,但不是每个人都愿意坚持使用Visual Studio。