OleVariant 和 SafeSysFreeString

Posted

技术标签:

【中文标题】OleVariant 和 SafeSysFreeString【英文标题】:OleVariant and SafeSysFreeString 【发布时间】:2021-09-19 01:18:28 【问题描述】:

如果我使用OleVariant 而不是VARIANTARG 来存储VT_BSTRVOleStr 中的OleVariant),当我处理完字符串后是否还需要调用SafeSysFreeString,或者是这样吗?超出范围时由 OleVariant 自动调用?

例如:


WB->Navigate("https://www.example.com");
while (WB->ReadyState != Shdocvw::READYSTATE_COMPLETE) Application->ProcessMessages();

DelphiInterface<IOleCommandTarget> pOleCmdTarget;
WB->Document->QueryInterface(IID_IOleCommandTarget, (void**)&pOleCmdTarget);

OleVariant v;

if (pOleCmdTarget->Exec(&CMDSETID_Forms3, IDM_FONTNAME, Shdocvw::MSOCMDEXECOPT_DONTPROMPTUSER, NULL, v)==S_OK)
    
    // utilize v.VOleStr here...
    
 // Does OleVariant auto-deallocate (SafeSysFreeString) here?

【问题讨论】:

【参考方案1】:

OleVariant 会在超出范围时自动为您释放其数据的内存。

【讨论】:

感谢您的回复!

以上是关于OleVariant 和 SafeSysFreeString的主要内容,如果未能解决你的问题,请参考以下文章

压缩OLEVARIANT数据

delphi中调用一函数function(Index :OleVariant),其中Index :OleVariant应该填写啥,OleVariant是啥

如何有效地将 OleVariant 数组复制到我自己的结构中?

delphi olevariant 内存泄露怎么解决

TMemoryStreamString与OleVariant互转

Cardinal 到 OleVariant 的错误转换。 UInt64 没问题