2009-07-14 15 views
5

मुझे याद है कि कहीं कहीं "^" ऑपरेटर को प्रबंधित सी ++ कोड में पॉइंटर ऑपरेटर के रूप में उपयोग किया जाता है। इसलिए "^" "*" ऑपरेटर के बराबर होना चाहिए ??सी ++ में स्ट्रिंग^समझना। नेट

मान लिया जाये कि मेरी समझ सही है, जब मैं नेट समझने शुरू कर दिया और कुछ उदाहरण कार्यक्रमों कोडित, मैं इस तरह कुछ कोड भर में आया था:

String ^username; //my understanding is you are creating a pointer to string obj 
. 
.   // there is no malloc or new that allocates memory to username pointer 
. 
username = "XYZ"; // shouldn't you be doing a malloc first??? isn't it null pointer 

मैं मुसीबत यह समझ कर रहा हूँ।

उत्तर

8

String^ प्रबंधित ढेर के लिए एक सूचक है, उर्फ ​​संभाल। पॉइंटर्स और हैंडल इंटरचेंज योग्य नहीं हैं।

कॉलिंग new एक अप्रबंधित ढेर पर एक ऑब्जेक्ट आवंटित करेगा और एक सूचक वापस करेगा। दूसरी ओर, gcnew पर कॉल करने से एक प्रबंधित ढेर पर ऑब्जेक्ट आवंटित किया जाएगा और एक हैंडल वापस कर दिया जाएगा।

लाइन username = "XYZ" केवल एक कंपाइलर चीनी है। यह

username = gcnew String(L"XYZ"); 
3

यह एक कचरा एकत्रित स्ट्रिंग के लिए सूचक नहीं है, सूचक नहीं है।

इसे आवंटित और स्वचालित रूप से हटा दिया जाएगा, जब कुछ भी इसका संदर्भ नहीं दे रहा है।

2

के बराबर आप समझते हैं कि ^shared_ptr के समान है आप दूर नहीं सच्चाई से हो जाएगा।

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