आपने कभी भी test
के लिए मेमोरी हटा दी है, और न ही आप test2
के लिए मेमोरी हटाते हैं। एकमात्र चीज जो कभी भी हटा दी जाती है वह ऑब्जेक्ट*test
है, जो ऑब्जेक्ट *test2
(पॉइंटर्स समान हैं) के समान है, और इसलिए आपको इसे केवल एक बार हटा देना होगा।
यह एक बहुत ही आम है और बहुत दुर्भाग्यपूर्ण मिथ्या नाम है कि प्रसारित और सी के लिए नए लोगों के मन लूट ++ है: एक अक्सर की "एक सूचक को मुक्त" या "एक सूचक को हटाने", जब आप वास्तव में मतलब है "के लिए स्मृति को मुक्त कराने के बोलचाल की भाषा में बोलता है जो मेरे पास एक पॉइंटर है ", या" ऑब्जेक्ट को हटा रहा है जिसमें मेरे पास पॉइंटर है "। यह सच है कि प्रासंगिक निर्माण (यानी std::free
और delete
) उनके तर्क को इकाई में एक सूचक के रूप में लेते हैं, लेकिन इसका मतलब यह नहीं है कि सूचक स्वयं पर संचालित होता है - यह केवल स्थान की वस्तु के संचार से संचार करता है ब्याज।
स्रोत
2012-08-07 23:07:31
आप वास्तव में "पॉइंटर हटाएं" नहीं करते हैं, तो आप इसे स्मृति * * को मुक्त करते हैं। –