के कारण मेमोरी लीक पाएं क्या किसी को स्मार्ट पॉइंटर्स के कारण मेमोरी लीक खोजने के लिए "तकनीक" पता है? मैं वर्तमान में सी ++ में लिखी गई एक बड़ी परियोजना पर काम कर रहा हूं जो संदर्भ गणना के साथ स्मार्ट पॉइंटर्स का भारी उपयोग करता है। स्पष्ट रूप से हमारे पास स्मार्ट पॉइंटर्स के कारण कुछ मेमोरी लीक हैं, जिन्हें अभी भी कोड में कहीं संदर्भित किया गया है, ताकि उनकी याददाश्त मुक्त न हो। "आवश्यक" संदर्भ के साथ कोड की रेखा को ढूंढना बहुत मुश्किल है, जो संबंधित वस्तु को मुक्त नहीं किया जाता है (हालांकि यह अब उपयोग नहीं है)।स्मार्ट पॉइंटर्स
मुझे वेब में कुछ सलाह मिली, जो संदर्भ काउंटर के वेतन वृद्धि/कमी संचालन के कॉल स्टैक एकत्र करने का प्रस्ताव रखती है। यह मुझे एक अच्छा संकेत देता है, कोड के किस टुकड़े ने संदर्भ काउंटर को बढ़ाने या घटने का कारण बना दिया है।
लेकिन मुझे जो कुछ चाहिए वह कुछ प्रकार का एल्गोरिदम है जो संबंधित "वृद्धि/कमी कॉल स्टैक्स" को जोड़ता है। कॉल स्टैक्स के इन जोड़े को हटाने के बाद, मुझे उम्मीद है कि (कम से कम) एक "कॉल स्टैक बढ़ाएं" छोड़ दिया गया है, जो मुझे "अनावश्यक" संदर्भ के साथ कोड का टुकड़ा दिखाता है, जिससे इसी वस्तु को मुक्त नहीं किया जाता है। अब रिसाव को ठीक करने का कोई बड़ा सौदा नहीं होगा!
लेकिन क्या किसी के पास समूह "एल्गोरिदम" का विचार है?
विकास विंडोज XP के तहत होता है।
(मुझे आशा है कि किसी को समझ में आया, कि मैं क्या समझाने की कोशिश की ...)
संपादित करें: मैं वृत्तीय संदर्भ की वजह से लीक के बारे में बात कर रहा हूँ।
मुझे यकीन नहीं है कि मैं समझता हूं ... क्या आप एक प्रोग्रामिंग भाषा या मंच को विशेष रूप से संदर्भित कर सकते हैं? मेमोरी लीक उनके हैंडलिंग में भिन्न हो सकते हैं। – zxcv
स्मार्ट पॉइंटर्स आमतौर पर सी ++/एसटीएल का मतलब है। –
यहां कुछ भ्रम है। मुझे लगता है कि यह आवंटित स्मृति के बीच अंतर करने योग्य होगा जिसमें पॉइंटर नहीं है (स्मार्ट पॉइंटर्स के साथ नहीं होना चाहिए), सर्कुलर संदर्भों के कारण लीक, और जिन वस्तुओं का जीवन समय बढ़ाया जाता है, वे पॉइंटर को चारों ओर रखा जाता है। –