【问题标题】:Out parameters deallocation in an out of process COM server进程外 COM 服务器中的输出参数释放
【发布时间】:2013-09-12 20:44:32
【问题描述】:

我有一个进程外的 COM 服务器,它具有以下方法:
STDMETHODIMP CMyCom::process(/[out]/BSTR* pResponse);
在这种方法中,我为 pResponse 属性分配内存如下:
*pResponse = ::SysAllocString("一些字符串");

我的问题是,当方法返回时,谁负责释放分配给这个 BSTR 的内存?是 COM 子系统吗?

【问题讨论】:

标签: windows memory com


【解决方案1】:
   STDMETHODIMP CMyCom::process(/*[out]*/BSTR* pResponse); 

它必须带有 [out, retval] 才能与 COM 自动化兼容。自动化合约要求调用者在使用字符串后释放它。任何自动化客户端都能做到这一点。

【讨论】:

  • 如果客户端是一个使用 jInterop 调用 COM 服务器的 Java 类怎么办?这种情况下,内存怎么释放?
猜你喜欢
  • 2014-02-18
  • 2011-05-17
  • 2010-11-18
  • 2013-01-20
  • 2012-09-06
  • 1970-01-01
  • 2011-11-12
  • 2015-05-23
  • 2012-10-10
相关资源
最近更新 更多