का मेमोरी पदचिह्न unique_ptr
उदाहरण (कस्टम डिलीटर के बिना) में एक ही मेमोरी पदचिह्न कच्चे सूचक के रूप में होता है या एक सूचक को सिर्फ सूचक से अधिक स्टोर करता है? , तोunique_ptr
sizeof (unique_ptr) = 8
इस के तहत:
का मेमोरी पदचिह्न unique_ptr
उदाहरण (कस्टम डिलीटर के बिना) में एक ही मेमोरी पदचिह्न कच्चे सूचक के रूप में होता है या एक सूचक को सिर्फ सूचक से अधिक स्टोर करता है? , तोunique_ptr
sizeof (unique_ptr) = 8
इस के तहत:
@JoachimPileborg, सुझाव दिया जीसीसी 4.8 (64) इस कोड को
std::cout << "sizeof(unique_ptr) = " << sizeof(std::unique_ptr<int>) << '\n';
के साथ इस उत्पादन का उत्पादन कार्यान्वयन, उत्तर हाँ है।
यह आश्चर्यजनक नहीं है: सब के बाद, unique_ptr
सुविधाओंके लिए कच्चे संकेत (। उदा shared_ptr
के रूप में एक काउंटर है वास्तव में, यदि मैं sizeof(shared_ptr<int>)
परिणाम प्रिंट इस समय 16
है) नहीं जोड़ता है। unique_ptr
पॉइंटर्स प्रबंधन के कुछ पहलुओं के बारे में आपकी देखभाल करता है।
वैसे, एक unique_ptr
कच्चे से अलग होने के कारण, उत्पन्न कोड एक या दूसरे का उपयोग करते समय अलग होगा। विशेष रूप से, एक unique_ptr
अगर अपने कोड में क्षेत्र से बाहर चला जाता है, संकलक कि विशेष रूप से विशेषज्ञता के नाशक के लिए कोड उत्पन्न हो जाएगा और यह उपयोग कि हर बार कोड उस प्रकार के unique_ptr
नष्ट हो जाएगा (और वह यह है कि बिल्कुल आप क्या चाहते हैं)।
यह एक बहुत ही कार्यान्वयन-विशिष्ट प्रश्न है, और इस तरह विभिन्न मानक पुस्तकालयों के बीच काफी अंतर हो सकता है। लेकिन एक साधारण जांच के लिए कच्चे सूचक की जांच और तुलना करने के लिए 'sizeof' का उपयोग क्यों न करें? –
@ जोचिमपिलबोर्ग क्योंकि मैंने सोचा था कि भविष्य में अन्य लोगों का भी यही प्रश्न हो सकता है। अच्छी बात। तकनीकी रूप से मुझे यह पूछना चाहिए था: "क्या यह संभव है * एक अद्वितीय स्मृति पदचिह्न के साथ 'अद्वितीय_पीआरआर' को लागू करने के लिए एक कच्चे सूचक के रूप में लागू करें" क्योंकि संभवतः कार्यान्वयन संभवतः ऐसा करेगा। – Museful
उत्तर यहां है: http://stackoverflow.com/a/13460653/2183287 –