2011-06-08 64 views
0
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改變指數(BSTR)的值到我的期望值,而且長度(BSTR)的值改變爲指數的值(BSTR )。我一直在嘗試做很多選項,包括索引和長度的SysAllocString,但同樣的問題仍然存在。VarBstrFromI4改變一些其他BSTR的值在程序

請幫忙。

回答

2

一旦你在一個字符串上調用SysFreeString,你就不應該在意字符串了。釋放的字符串在內部保存一個地址以解除分配內存,稍後可以由另一個字符串或變量分配內存。在這種情況下,只是發生新字符串被放置在與舊字符串相同的內存地址。

相關問題