अगर मैं निम्नलिखित बयान है ढेर पर मेमोरी आवंटित करने: गतिशील ढेर परसी ++ - का उपयोग करते हुए 'नई'
int *x = new int;
इस मामले में, मैं आवंटित स्मृति। दूसरे शब्दों में, अब मेरे पास मेमोरी पता int
ऑब्जेक्ट के लिए है।
delete x;
इसका मतलब है कि मैं ढेर पर स्मृति पता freed up
:
कहते हैं कि उसके बाद मैं निम्नलिखित बनाया है। उसके बाद
कहते हैं मैं फिर से निम्नलिखित था:
int *x = new int;
विल x
ही वर्ष स्मृति पता यह ढेर पर की ओर इशारा करने के लिए बिंदु से पहले हटा दी गई?
क्या होगा यदि मैं delete
से पहले ऐसा किया:
x = NULL;
और, तो ऐसा किया:
int *x = new int;
विल x
ढेर पर आ स्मृति पता इंगित अन्य से पुराना वाला?
धन्यवाद।
केवल पॉइंटर को 'न्यूल' पर सेट करके, आप हैं इसे हटा नहीं रहा यदि आप फिर 'नया int' करते हैं, तो पुरानी मेमोरी अभी भी उपयोग में होगी (बिना पॉइंटर के - यह एक मेमोरी लीक है), और निश्चित रूप से 'नया' * हमेशा * * * * को इंगित करेगा - इसलिए नाम। –