【发布时间】:2013-01-05 13:07:12
【问题描述】:
MSXML methods 是否取得其 BSTR 参数的内存所有权?
例如:load、getElementsByTagName 或 selectSingleNode
我之所以问这个问题是因为我看到代码只是调用 CString 的 AllocSysString() 并将其传递给 MSXML 方法而不随后调用 SysFreeString()。
编辑:
快速修复我使用_bstr_t 看到的代码:https://stackoverflow.com/a/14471409/109747(我的帖子)
【问题讨论】:
-
不,他们为什么要这样做?你提供了一个字符串,你仍然是它的所有者。该方法将在必要时进行复制。
-
@RomanR。因为我是新手,我看到了一个代码,它只调用了 CString 的
AllocSysString()而没有调用SysFreeString() -
@afriza:这会导致泄漏——这是 C++ 中一个非常常见的错误。
-
@afriza:这是“代码”,而不是“代码”...
标签: c++ memory-management com msxml bstr