Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个进程外 COM 服务器,它具有以下方法: STDMETHODIMP CMyCom::process(/ [out] /BSTR* pResponse); 在这种方法中,我为 pResponse 属性分配内存如下: *pResponse = ::SysAllocString("Some string");
我的问题是,当方法返回时,谁负责释放分配给这个 BSTR 的内存?是 COM 子系统吗?
STDMETHODIMP CMyCom::process(/*[out]*/BSTR* pResponse);
它必须带有 [out, retval] 才能与 COM 自动化兼容。自动化合约要求调用者在使用字符串后释放它。任何自动化客户端都能做到这一点。