2016-01-17 12 views
6

डी वस्तुओं के स्वामित्व का प्रबंधन कैसे करता है? उदाहरण के लिए मैं निम्नलिखित व्यक्त करने के लिए की जरूरत है:कमजोर संदर्भ या पॉइंटर्स

1.) Allocate an object 
2.) Give out references/pointers 
3.) If the initially allocated object is deleted, 
    all references/pointers should become inaccessible. 

C++ में इस std::shared_ptr + std::weak_ptr साथ संभव है। क्या यह डी में भी संभव है?

+0

बेहतर समझने के लिए https://dlang.org/spec/garbage.html देखें कि आप वस्तुओं के जीवनकाल को कैसे नियंत्रित कर सकते हैं। –

+0

@key_ क्या आप वाकई सही लिंक पोस्ट कर चुके हैं? मुझे जीवन समय प्रबंधन से संबंधित कुछ भी नहीं मिल रहा है। –

+0

आप एक सीलबंद संदर्भ लागू करना चाहते हैं, फिर जब भी आप एक आउट करते हैं तो पॉइंटर्स को पॉइंटर्स रखें। वे पॉइंटर्स सूची से खुद को हटाने के लिए अपने जीवनकाल से अवगत होना चाहते हैं ... इसमें एक अतिरिक्त मात्रा में ओवरहेड शामिल है। कमजोर संदर्भ स्वयं आसान होते हैं - बस एक संकेतक बनाएं जो जीसी स्कैन नहीं करता है, या आपके रिफॉउंट को बढ़ाता नहीं है - लेकिन ऑब्जेक्ट हटा दिए जाने पर उन्हें अमान्य करना मुश्किल है। –

उत्तर

2

फिलहाल डी

में कमजोर संदर्भ की कोई अच्छा कार्यान्वयन है

इन दोनों मंच धागे की जांच करें:

गलत या "लगभग "सही कार्यान्वयन:

सबसे बड़ी समस्या यह है कि आप के चारों ओर एक अच्छा एपीआई कमजोर संदर्भ की जरूरत है। जावा और .NET में यह है, और यह तर्कसंगत रूप से बीएडी है। एक अच्छे कारण के लिए - एक अच्छा एपीआई के साथ आना मुश्किल है!

+1

मुझे नफरत है कि बहुत से डी फोरम थ्रेड्स में यूआरएल में डॉलर के संकेत हैं। बह, यह बहुत सारे यूआरएल डिटेक्टरों को तोड़ देता है। –

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