Sümptomid
Kujutage ette järgmist stsenaariumi.
-
Teil tekivad web browser kontrolli põhirakendus või ActiveX-juhtelementi.
-
Taotluse või ActiveX-juhtelemendi viited loendur objekti kogumine Interface HTML-lehele. Selle funktsiooni loomiseks vt järgmisi suuniseid:
-
C++, saadakse loendur kogumise liidesget__newEnum funktsiooni. Näiteks kogumise liides on IHTMLElementCollectionjaja see on tavaliselt saadud helistades IHTMLDocument2::get_all.
-
Visual Basicu selles etapis toimub foreach tarindit taustal üle kogumik (nt document.all kogumine).
-
-
Rakenduse käivitada arvutis, kuhu on installitud Internet Explorer 10.
Selle stsenaariumi korral ilmneb mäluleke.
Märkus. Kuna ActiveX-juhtelemendid tarbida rohkem mälu kui native HTML elemendid, mälu leke on selge, kui elementi kogumine on ActiveX-juhtelement. Näiteks mälulekke ilmneb C++ koodi kasutamisel funktsiooni web browser kontrolli põhirakendus. Selles olukorras on suurel hulgal mälu lekkinud kui üks elemente veebilehel on ActiveX-juhtelement. 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(); }Lahendus
Selle probleemi lahendamiseks installige järgmine värskendus:
2862772 MS13-059: Internet Exploreri seniste koondturvavärskenduste: 13 August 2013
Lisateabe saamiseks
Tarkvaravärskenduste terminoloogia kohta lisateabe saamiseks avage Microsofti teabebaasi (Knowledge Base) artikkel, klõpsates järgmist artiklinumbrit:
824684 Microsofti tarkvaravärskenduste iseloomustamiseks kasutatavate standardterminite kirjeldus