2010-05-04 28 views
7

Próbuję wyśledzić wyciek pamięci w obiekcie COM i nie widzę niczego oczywiście nie tak. Prawdopodobnie używam niektórych wrapperów COM niepoprawnie, ale mój standardowy zestaw narzędzi do wykrywania wycieków pamięci (AQtime) nie pomaga mi w COM. Czy ktoś ma jakieś sztuczki/narzędzia do śledzenia wycieków pamięci/referencji COM?Jak wyłapać wyciek pamięci COM

Odpowiedz

4

Jeśli używasz ATL, możesz zdefiniować _ATL_DEBUG_INTERFACES (patrz MSDN entry). To z pewnością pomoże ci złapać wyciekane interfejsy, chociaż oczywiście nie pomoże złapać jakichkolwiek wycieków wewnętrznych zasobów wewnątrz obiektu.

+0

Jeśli nie korzystasz z ATL lub podobnych narzędzi, zacznij teraz i nie używaj ręcznej obsługi COM. –

3

Sprawdź, czy obiekty COM zostały całkowicie zwolnione. Zwykle funkcja AddRef + Release zwraca bieżącą liczbę odwołań do celów debugowania (nie powinieneś polegać na tym w przypadku kodu produkcyjnego).

W przeciwnym razie, po prostu ogólna rada: zredukuj kod - czy dostaniesz wyciek, który właśnie utworzyłeś i zwalniasz instancję? Po pewnym wywołaniu metody?