SysAllocString
SysFreeString
_bstr_t

解决方案 »

  1.   

    这些我当然是知道的,我是这个意思:
    比如我需要传入com一个BSTR字串,在外面分配,然后调用接口函数,然后在外面释放。
    我需要com中传出一个BSTR,则必须在com中分配吧?然后在哪儿释放?在外面是不是太不规范?
    希望有此编程经验的人给我一点好的建议。
      

  2.   

    另外如果我想传给com一个结构,中间含有很多个BSTR,那么我还必须挨个给它们分配空间,然后在调用接口函数结束后挨个释放它们?麻烦是小事儿,关键是调用方准确分配和释放,安全性大大降低了。
      

  3.   

    to丁丁:谢谢,不过在内部分配外部释放是不是不大符合哪里分配哪里释放的原则?如果在com内编制一个函数专门释放内部分配的内存,在调用需要的接口函数后再调用它是不是更好?
      

  4.   

    Effetive C++不是说千万不要传回在函数内分配的对象吗?现在一传就是一大堆。:)
      

  5.   

    微软的很多接口都是这么干的
    HRESULT IHTMLDocument2::get_title(BSTR *p);
    要自己free