У меня CHtmlView based MDI приложение. В чистом виде открываю в новый документ страничку - память, занимаемая программой увеличивается примерно на 500кБ. Ничего внутри не делаю, закрываю страничку - память, занимаемая приложением на те же примерно 500 кБ уменьшается.
В обработчик OnDocumentComplete вставляю следующий код:
CComPtr<IHTMLDocument2> pHtmlDoc=NULL;
pHtmlDoc = GetDocument2();
Память перестаёт освобождаться. При каждом новом открытии той же странички увеличивается, при закрытии не освобождается.
Предположил, что это CComPtr не смывает за собой, сделал ручками:
IHTMLDocument2* pHtmlDoc=NULL;
pHtmlDoc=GetDocument2(); if(pHtmlDoc){
// Ничего не трогал!
pHtmlDoc->Release();
}
Тот же самый эффект.
Кстати, CDHtmlDialog ведёт себя точно таким же образом.
Кто-нибудь сталкивался с подобным поведением, и как решали проблему?
( про то, что функция Navigate не освобождает скармливаемый ей bstrURL я знаю, и соответствующие меры принял, да и похоже, что дело как раз в GetDocument2() )
За памятью смотрел из Руссиновического процессэксплорера.
Спасибо.