BSTR length;
BSTR checkLength = SysAllocString(TEXT("document.getElementsByTagName('tspan').length.toString()"));

HRESULT h = gWebView->stringByEvaluatingJavaScriptFromString(checkLength, &length);
SysFreeString(checkLength);

long longLength;
h = VarI4FromStr(length,0,0,&longLength);
SysFreeString(length);

BSTR index;
long longIndex = longLength - 1;
h = VarBstrFromI4(longIndex,0,0,&index);


最后一行VarBstrFromI4将index(BSTR)的值更改为我的期望值,但还将length(BSTR)的值更改为index(BSTR)的值。我一直在尝试做许多选择,包括带有索引和长度的SysAllocString,但是仍然存在相同的问题。

请帮忙。

最佳答案

在字符串上调用SysFreeString后,就不再需要关心该字符串了。释放的字符串在内部保留了一个释放内存的地址,该地址以后可以由另一个字符串或变量分配。在这种情况下,恰好将新字符串与旧字符串放在相同的内存地址中。

08-18 11:51
查看更多