साथ auto_ptr उपयोग करने के लिए अगर मैं का उपयोग करयह गलत नया चार [n]
std::auto_ptr<char> buffer(new char[n]);
तो बफर स्वचालित रूप से बफर क्षेत्र से बाहर चला जाता है हटा दिया गया है एक अस्थायी ऑटो नष्ट कर दिया चरित्र बफर की घोषणा है। मुझे लगता है कि बफर हटाकर हटा दिया गया है।
हालांकि बफर को नए [] का उपयोग करके बनाया गया था, और इसलिए कड़ाई से बोलने वाले बफर को हटाकर हटाया जाना चाहिए []।
क्या यह संभावना है कि इस विसंगति से स्मृति रिसाव हो सकता है?
बिंदु हटाए जाने की गारंटी के लिए है के साथ। एक स्मार्ट पॉइंटर/सरणी का उपयोग करना सामान्य प्रोग्रामिंग गुंडों के साथ सुरक्षित है और अपवाद होने पर स्मृति को मुक्त करने के लिए पर्याप्त स्मार्ट होने के नाते भी सुरक्षित है। सी सरणी का उपयोग सीधे मेमोरी रिसाव के लिए पूछ रहा है। – Diastrophism
पूरा बिंदु यह है कि हम हटाना की गारंटी देना चाहते हैं। इस प्रकार अनचाहे रॉ नया एक अच्छा जवाब नहीं है। दूसरी ओर std :: वेक्टर एक अच्छा जवाब है –