首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何清除BSTR中的内存泄漏

如何清除BSTR中的内存泄漏
EN

Stack Overflow用户
提问于 2020-09-16 13:58:49
回答 2查看 105关注 0票数 0

当运行我的应用程序时,它有一个内存增长。所以我收集了UMDH数据,它指向下面的代码,

代码语言:javascript
复制
BSTR bstrTestName = strCurTestName.AllocSysString();
 BSTR bstrTestInstname = strTestInstName.AllocSysString();
HRESULT hr = g_pDLServiceNetInterop->SetCurTestName(bstrTestName, pCurTestData->GetTestType(), bstrTestInstname, pCurTestData->GetTestMemberCount());

其中strCurTestName和strTestInstName是TString

我在这个方法中看不到对SysFreeString的调用。

我知道,如果我们将BSTR传递给客户端,它将负责清除内存。在当前的场景中,这是一个漏洞,我需要调用SysFreeString还是不是一个漏洞。

EN

回答 2

Stack Overflow用户

发布于 2020-09-17 00:32:52

这是一个漏洞。我们需要明确地清除它。我没有使用BSTR,而是使用CComBSTR,它解决了泄漏问题(是的,调用SysFreeString也解决了泄漏问题)。

票数 2
EN

Stack Overflow用户

发布于 2020-09-16 14:48:33

您可以调用SysFreeString(bstrTestName)函数来释放字符串。

Edit:正如注释所指出的,由于您没有将字符串传递给客户端,就像任何已分配的内存一样,它将保持已分配状态,除非您通过SysFreeString函数调用释放它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63913974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档