निम्नलिखित कोड झूलने संदर्भ का उत्पादन:उलझन संदर्भ। पॉइंटर्स और संदर्भों को लटकाने के विकल्प?
int main()
{
int *myArray = new int[2]{ 100, 200 };
int &ref = myArray[0];
delete[] myArray;
cout << ref; // Use of dangling reference.
}
मैं जानता हूँ कि मैं सरणी को नष्ट नहीं करना चाहिए, लेकिन एक बड़े कार्यक्रम क्या हुआ अगर किसी को स्मृति हटाता में करने के लिए जो मैं एक संदर्भ है? क्या किसी भी तरह से आश्वासन दिया जा सकता है कि कोई भी सरणी को हटा देता है?
संदर्भों को लटकाने और लटकने वाले पॉइंटर्स के खिलाफ सबसे अच्छी रणनीति क्या है?
शायद 'boost :: shared_ptr'। –
http://stackoverflow.com/questions/395123/raii-and-smart-pointers-in-c। या इस उदाहरण में, सबसे अच्छा विकल्प यह नहीं करना है। –
एक गतिशील आवंटित सरणी का सबसे अच्छा विकल्प 'std :: vector' है। 'नया []' और 'हटाएं [] 'का उपयोग करने के लिए सी ++ में व्यावहारिक रूप से बहुत कम आवश्यकता है। - लेकिन फिर भी, इटेटर और संदर्भ आसानी से अवैध हो जाते हैं। आम तौर पर आपको उन चीजों के लिए दीर्घकालिक संदर्भ नहीं होना चाहिए जिनके पास लंबे जीवनकाल नहीं हो सकते हैं। – UncleBens