Добрый день.
при использовании следующего куска кода:
................
hr_inet = pHTMLElemBody_i -> QueryInterface(IID_IHTMLDOMNode, (void**)&pRootNode_i);
int rr=0;
BSTR tagName = SysAllocString(L"XXXXX");
while( rr <= 100000)
{
pRootNode_i->get_nodeName(&tagName);
rr++;
}
::SysFreeString(tagName);
происходит утечка памяти порядка 5-6 МегаБайт,
я искал утечку памяти, в код проги воткнул цикл while( rr <= 100000), и вот плачевный результат Task Manager — показал эту утечку.
очень расчитываю на Вашу помощь.
Здравствуйте, bezrodnii, Вы писали:
B>int rr=0;
B>BSTR tagName = SysAllocString(L"XXXXX");
B>while( rr <= 100000)
B>{
B> pRootNode_i->get_nodeName(&tagName);
B> rr++;
B>}
B>::SysFreeString(tagName);
B>происходит утечка памяти порядка 5-6 МегаБайт,
Память для [out]-параметров должен осваобождать клиент. Поэтому код нужно исправиьт так:
BSTR tagName = 0;
while( rr <= 100000)
{
pRootNode_i->get_nodeName(&tagName);
rr++;
SysFreeString(tagName);
}
А лучше всего использовать wrapper'ы:
while( rr <= 100000)
{
CComBSTR tagName;
pRootNode_i->get_nodeName(&tagName);
rr++;
}