2010-05-04 35 views
7

COM nesnesindeki bir bellek sızıntısını izlemeye çalışıyorum ve açıkça yanlış bir şey göremiyorum. Muhtemelen bazı COM sarmalayıcılarını hatalı kullanıyorum, ancak bellek sızıntıları bulma standart araç takımım (AQtime) bana COM ile yardımcı olmuyor. COM bellek/referans sızıntılarını izlemek için herhangi bir hile/araç var mı?COM bellek sızıntısı nasıl izlenir

cevap

4

ATL kullanıyorsanız, _ATL_DEBUG_INTERFACES öğesini tanımlayabilirsiniz (bkz. MSDN entry). Bu kesinlikle, herhangi bir sızan arabirimleri yakalamanıza yardımcı olacaktır, ancak açıkçası, nesne içinde dahili olarak sızan kaynakları yakalamaya yardımcı olmayacaktır.

+0

ATL veya benzeri araçları kullanmıyorsanız, şimdi başlayın ve manuel COM işlemlerini kullanmayın. –

3

COM nesnelerine/nesnelerinin tamamen serbest bırakılıp bırakılmadığını kontrol edin. Genellikle, AddRef + Release, geçerli referans sayısını hata ayıklama amaçları için döndürür (üretim kodu için buna güvenmemeniz gerekir). Aksi takdirde, sadece genel öneri: ilgili kodu azaltın - örneği oluşturup yayınladığınıza dair sızıntıyı alıyor musunuz? Belirli bir yöntemden sonra mı?