الأعراض
يرجى مراعاة السيناريو التالي:
-
يمكنك تطوير تطبيق مضيف عنصر تحكم مستعرض ويب أو عنصر تحكم ActiveX.
-
التطبيق أو عنصر تحكم ActiveX مراجع كائن العداد من واجهة مجموعة من صفحة HTML. لإنشاء هذه الوظيفة، راجع الإرشادات التالية:
-
في c + +، العداد يتم الحصول عليها عن طريق استدعاء دالة get__newEnum لواجهة مجموعة. مثال لواجهة مجموعة إيهتمليليمينتكوليكشن، وهذا عادة ما يتم الحصول عليها عن طريق استدعاء 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