सी ++ के लिए कचरा कलेक्टर क्या उपलब्ध हैं? क्या आप उनमें से किसी का उपयोग कर रहे हैं? क्या परिणाम के साथ?सी ++ के लिए कचरा कलेक्टर क्या उपलब्ध हैं?
उत्तर
Boost लाइब्रेरी में कुछ साझा_प्टर सामग्री शामिल हैं जो मूल रूप से कचरा कलेक्टर की गणना करने वाले संदर्भ के रूप में कार्य करती हैं। यदि आप C12+ डिज़ाइन के RAII सिद्धांत को गले लगाते हैं, तो और auto_ptr "कचरा कलेक्टर" के लिए आपकी आवश्यकता को भर देगा।
यदि आप चक्रीय संदर्भों को मॉडल करने में सक्षम होना चाहते हैं। –
@DanielEarwicker: वास्तव में बूस्ट में कमजोर_ptr भी है, इसे संबोधित करने के लिए। –
@ जोसेफ गारविन ट्रू - लेकिन फिर आपको सही चुनना होगा। जीसी के साथ, आप नहीं करते (ओपी ने यही पूछा है)। –
एकमात्र जिसे मैंने व्यक्तिगत रूप से सुना है Boehm garbage collector मुझे यकीन है कि अन्य मौजूद हैं, लेकिन मैंने उनसे निपटा नहीं है (या उन्हें भी देखा है)।
कई सी ++ जीसी सूचीबद्ध हैं on wikipedia।
हालांकि, मैं किसी का भी उपयोग नहीं करता, आरएआईआई भी मेरा मित्र है।
बोहेम कचरा कलेक्टर सी के लिए बहुत अच्छा है, लेकिन सी ++ के तहत उपयोग करना मुश्किल है। http://www.hpl.hp.com/personal/Hans_Boehm/gc/gcinterface.html पर "सी ++ इंटरफ़ेस" अनुभाग देखें।
मेरी राय यह है कि यदि आपको कचरा संग्रहण की आवश्यकता है, तो उस लंगेज का चयन करें जिसमें इसे अंतर्निहित बनाया गया है।
सर्कुलर निर्भरताओं से निपटने के साथ सी ++ के लिए सबसे अच्छा सामान्य समाधान साझा पॉइंटर्स (उदाहरण के लिए बढ़ावा से) है। दो चीजें आप कर सकते हैं: 1. डिजाइन कोई परिपत्र निर्भरता 2. डिजाइन एक 'Linch पिन' उस चक्र टूट जाता है वस्तुओं
या तो आप असली के साथ सौदा के उद्धार के लिए अनुमति देने के साथ बात के साथ बात खराब, गठबंधन, सी ++ के लिए कचरा कलेक्टर के साथ समस्याओं को डीबग करना मुश्किल है या जब आप उनके साथ काम करते हैं तो आप अपनी वस्तुओं को मुक्त करने की सरल शास्त्रीय समस्या से निपटते हैं।
हमेशा है, अहम: C++/CLI - .NET Framework के लिए C++। वहाँ बहुत अच्छा कचरा संग्रह। : पी
हालांकि, ईमानदार होने के लिए, वे वहां मौजूद सभी वाक्य रचनात्मक चीनी के साथ, आप लगभग पूरी तरह से एक नई भाषा मान सकते हैं जो सी/सी ++ के साथ काफी अच्छी तरह से काम करने के लिए होता है।
यदि आप किसी भाषा के रूप में सी ++ से विवाहित नहीं हैं, तो आप D पर भी देख सकते हैं, जो मूल कोड जैसे सी ++ (और सी ++/सीएलआई के विपरीत) में संकलित होता है लेकिन इसमें कचरा संग्रह भी होता है।
आप कई कार्यान्वयन here पा सकते हैं। मैंने कभी भी उनमें से किसी की कोशिश नहीं की है और आम तौर पर मुझे एक गैर-निर्धारक जीसी मिलती है जो अच्छे से ज्यादा नुकसान पहुंचाती है।
- 1. क्या सी ++ में कचरा कलेक्टर है?
- 2. Node.js 'कचरा कलेक्टर
- 3. कचरा कलेक्टर कॉल निपटान()?
- 4. LogManager और कचरा कलेक्टर
- 5. ग्रहण: कचरा कलेक्टर बटन
- 6. कंज़र्वेटिव कचरा कलेक्टर
- 7. .NET कचरा कलेक्टर की क्षमता
- 8. कचरा कलेक्टर और वृत्तीय संदर्भ
- 9. पायथन: कचरा कलेक्टर का व्यवहार
- 10. क्या उद्देश्य-सी में आईफोन पर कचरा कलेक्टर है?
- 11. जावा धागे और कचरा कलेक्टर
- 12. जावा संग्रह और कचरा कलेक्टर
- 13. विनाशक और कचरा कलेक्टर के बीच अंतर
- 14. नेट कचरा कलेक्टर - देखें कि रनटाइम
- 15. कचरा कलेक्टर को चलाने के लिए कैसे मजबूर करें?
- 16. gcServer = "true" कचरा कलेक्टर सेट करने के लिए नेट
- 17. कचरा कलेक्टर की पीढ़ियों का क्या अर्थ है?
- 18. जावास्क्रिप्ट/कचरा कलेक्टर में परिपत्र संदर्भ
- 19. रूबी में कचरा कलेक्टर ट्यूनिंग 1.9
- 20. .NET कचरा कलेक्टर और x64 वर्चुअल मेमोरी
- 21. कचरा कलेक्टर का उपयोग कितना समय है?
- 22. कचरा कलेक्टर और स्थैतिक वर्ग, परिवर्तनीय
- 23. .NET 4 कचरा कलेक्टर की मापनीयता
- 24. जावा अज्ञात वर्ग और कचरा कलेक्टर
- 25. सीएमएस कचरा कलेक्टर - यह कब चलता है?
- 26. JRuby - कचरा कलेक्टर कैसे शुरू करें?
- 27. .NET कचरा कलेक्टर की आंतरिक कार्यप्रणाली?
- 28. .NET कचरा कलेक्टर - इसकी धागा प्राथमिकता क्या है?
- 29. क्या कोई JVM कचरा कलेक्टर की कमी है?
- 30. क्या जावास्क्रिप्ट कचरा कलेक्टर की सहायता करने के लिए यह समझ में आता है?
सामान्य मामले में कचरा कलेक्टर की कोई आवश्यकता नहीं है क्योंकि सी ++ स्मार्ट पॉइंटर्स बेहतर हैं और निर्धारक विनाश देते हैं। यदि आपके पास कचरा संग्रहण के लिए एक विशेष "केस का उपयोग करें" है तो शायद हम इस सवाल का अधिक विचारपूर्वक जवाब दे सकते हैं। –
@ मार्टिन - आपकी टिप्पणी एक उत्तर की तरह दिखती है। आपको इसे पोस्ट करना चाहिए ताकि लोग इसे सही तरीके से वोट दे सकें। – Aaron
बोहेम ने जीसी (2004 आईआईआरसी, जब स्मार्ट पॉइंटर्स अच्छी तरह से जाना जाता था) पर आईएसओ सी ++ कमेटी के लिए एक प्रेजेंटेशन दिया है, ऐसा लगता है कि मार्टिन की राय को तथ्य के रूप में नहीं बताया जाना चाहिए। – MSalters