2010-05-04 19 views
7

मैं COM ऑब्जेक्ट में मेमोरी लीक को ट्रैक करने का प्रयास कर रहा हूं, और मुझे कुछ भी गलत नहीं दिख रहा है। मैं शायद कुछ COM wrappers गलत तरीके से उपयोग कर रहा हूं, लेकिन मेमोरी लीक (एकटाइम) ढूंढने का मेरा मानक टूलकिट COM के साथ मेरी मदद नहीं कर रहा है। क्या किसी के पास COM मेमोरी/संदर्भ लीक को ट्रैक करने के लिए कोई चाल/उपकरण है?COM मेमोरी लीक को ट्रैक करने के लिए कैसे करें

उत्तर

4

यदि आप एटीएल का उपयोग कर रहे हैं तो आप _ATL_DEBUG_INTERFACES को परिभाषित कर सकते हैं (MSDN entry देखें)। यह निश्चित रूप से आपको किसी भी लीक किए गए इंटरफेस को पकड़ने में मदद करेगा, हालांकि स्पष्ट रूप से यह ऑब्जेक्ट के भीतर आंतरिक रूप से लीक किए गए किसी भी संसाधन को पकड़ने में मदद नहीं करेगा।

+0

और यदि आप एटीएल या इसी तरह के औजारों का उपयोग नहीं कर रहे हैं, तो अभी शुरू करें और मैन्युअल COM हैंडलिंग का उपयोग न करें। –

3

जांचें कि COM ऑब्जेक्ट पूरी तरह से रिलीज़ हो गया है या नहीं। आमतौर पर, AddRef + रिलीज डीबग प्रयोजनों के लिए वर्तमान संदर्भ गणना लौटाता है (आपको उस पर उत्पादन कोड के लिए भरोसा नहीं करना चाहिए)।

अन्यथा, केवल सामान्य सलाह: शामिल कोड को कम करें - क्या आपको रिसाव मिलती है जिसे आप अभी बनाते हैं और इंस्टेंस जारी करते हैं? एक निश्चित विधि कॉल के बाद?

संबंधित मुद्दे