VarBstrFromI4 изменяет значение некоторого другого BSTR в программе - PullRequest
0 голосов
/ 08 июня 2011
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 с индексом и длиной, но та же проблема сохраняется.

Пожалуйста, помогите.

1 Ответ

2 голосов
/ 08 июня 2011

Как только вы вызвали SysFreeString для строки, вам больше не нужно заботиться об этой строке.Освобожденная строка содержит адрес внутри освобожденной памяти, который впоследствии может быть выделен другой строкой или переменной.В этом случае просто случается, что новая строка помещается в тот же адрес памяти, что и старая строка.

...