Симптоми
Да разгледаме следния сценарий:
-
Разработка на уеб браузър контрол хост приложение или ActiveX контрола.
-
Приложение или ActiveX контрола препратки номератор обект от интерфейс за събиране на HTML страница. За да създадете тази функция, вижте следните указания:
-
В C++ номератор е получен чрез извикване на функцията get__newEnum колекция интерфейс. Пример за събиране на интерфейс е IHTMLElementCollectionи това обикновено се получава чрез извикване на IHTMLDocument2::get_all.
-
Във Visual Basic тази стъпка се извършва зад кулисите в foreach конструкция над колекция (например събиране на document.all).
-
-
Изпълнявате приложение на компютър с Internet Explorer 10 инсталиран.
В този случай възниква загуба на памет.
Забележка: Тъй като ActiveX контроли консумира повече памет от основните HTML елементи, загуба на памет е по-ясно, ако един от елементите в колекцията е ActiveX контрола.
Например възниква загуба на памет, когато използвате следния код на C++ функция на хост приложението уеб браузър контрол. В този случай голям обем памет е изтекъл ако един от елементите на уеб страницата е ActiveX контрола.
void CEnumLeakDlg::OnBnClicked(){
IDispatch* pDocDisp = m_web.get_Document();
IHTMLDocument2* pDoc = NULL;
HRESULT hr = pDocDisp->QueryInterface(IID_IHTMLDocument2, (void**)&pDoc);
IHTMLElementCollection* pElColl = NULL;
hr = pDoc->get_all(&pElColl);
IUnknown* pEnum = NULL;
hr = pElColl->get__newEnum(&pEnum);
pEnum->Release();
pElColl->Release();
pDoc->Release();
pDocDisp->Release();
}
Решение
За да разрешите този проблем, инсталирайте следната актуализация:
2862772 MS13-059: кумулативна актуализация на защитата за Internet Explorer: 13 август 2013 г.
Допълнителна информация
За повече информация относно терминологията за актуализация на софтуера щракнете върху следния номер на статия, за да я видите в базата данни на Microsoft:
824684 описание на стандартната терминология, използвана за описание на софтуерните актуализации на Microsoft