jjzjj

SysFreeString

全部标签

C++ 函数为无法调用 SysFreeString() 的函数返回 BSTR

请耐心等待,我作为C++程序员已经有一段时间了。我需要知道我是否做错了。它有效,但我怀疑它会导致内存泄漏。我有这个功能:_bstr_tWCH2BSTR(wchar_t*st){BSTRstres=SysAllocString(st);return(_bstr_t)stres;}假设我要使用这样的结果:wcout这会导致内存泄漏,还是BSTR会被Java中的“垃圾收集器”删除?如果是内存泄漏,我怎样才能在不失去作为单行程序的能力的情况下防止它发生?有时WCH2BSTR的结果存储在BSTR变量中并正确处理,但我想使用相同的函数以单行方式将wchar_t连接到BSTR。谢谢。

windows - SysAllocString/SysFreeString COM 函数需要调用 CoInitialize?

COM是否需要初始化才能使用SysAllocString、SysFreeString等BSTR处理函数?MSDN说YouneedtoinitializetheCOMlibraryonathreadbeforeyoucallanyofthelibraryfunctionsexceptCoGetMalloc在我看来,BSTR分配函数使用IMalloc,因此不需要COMinit? 最佳答案 我找不到官方文档说你可以在不初始化COM的情况下调用这些函数,但我可以带你去记忆一下一些有趣的观察。因为Windows95在具有4MBRAM的机器上运

windows - COM 服务器是否必须为 [out] 参数调用 SysFreeString()?

我们有如下界面:[object,uuid("uuidhere"),dual]interfaceIInterface:IDispatch{[id(1),propget]HRESULTCoolProperty([out,retval]BSTR*result);}现在有一个小问题。一方面,参数是“out”,因此任何值都可以作为输入传递,参数只有在成功返回后才会生效。另一方面,有thisMSDNarticle它从许多页面链接到,这些页面基本上说(最后一段)如果任何函数被传递BSTR*它必须在分配新字符串之前释放字符串。太可怕了。如果那篇文章是正确的,则意味着所有调用者都必须确保传递有效的BST