मेरे कोड में मैं एक छोटी डेटा-स्टोरेज क्लास का उपयोग करता हूं, जो विभिन्न स्थानों पर बनाई गई है। मेमोरी लीक से बचने और चीजों को आसान बनाने के लिए, मैं संदर्भ गिनती उपयोग करना चाहते हैं, तो मैंऑब्जेक्ट्स के लिए संदर्भ-गणना
type TFileInfo = class (TInterfacedObject, IInterface)
किया था और TFileInfo.Free करने के लिए अपने सभी मैनुअल कॉल हटा दिया। दुर्भाग्यवश डेल्फी ने बहुत मेमोरी लीक की सूचना दी। पर सर्च कर रहे हैं अतः मैं निम्नलिखित प्रश्न का कारण बताते हुए यह काम नहीं करता पाया:
Why aren't descendants of TInterfacedObject garbage collected?
वहाँ प्रस्तुत एक समाधान नहीं है, लेकिन यह मुझे की आवश्यकता है एक कस्टम इंटरफ़ेस IFileInfo लिखने के लिए (कम से कम अगर मैं इसे सही) और इसे कई गेटर्स और सेटर्स प्रदान करें, जिन्हें मैं टालना चाहता हूं।
संपादित मैं जोड़ने चाहिए कि मैं FileInfo बनाने सम्मिलित हैश तालिकाओं के दो विभिन्न प्रकार में वस्तुओं: एक TBucketList से उतरते और एक और एक CodeGear मंच से एक हैश नक्शा कार्यान्वयन है। आंतरिक रूप से वे दोनों उपयोगकर्ता पॉइंटर्स, इसलिए स्थिति अन्य प्रश्न की तरह ही है।
क्या डेल्फी उपयोग संदर्भ-गणना में वस्तुओं को बनाने की कोई अन्य संभावना है?
लेकिन क्या संकलक सही इंक/डीसी उत्पन्न करता है अगर मैं सभी ऑब्जेक्ट्स को हैश मैप में डालता हूं? – jpfollenius
उत्तर अतिरिक्त जानकारी के साथ संपादित – Kcats
यह कोड संकलित नहीं करता है। वस्तुओं को टाइपकास्ट इंटरफेस करना संभव नहीं है। – dummzeuch