मुझे हाल ही में एक साक्षात्कार में यह पूछा गया था, मूल रूप से नि: शुल्क कार्यक्षमता को जोड़कर और शून्य को असाइन करने के लिए एक फ़ंक्शन लिखना। मैं निम्नलिखित तरीके से उत्तर दिया:एक पॉइंटर को मुक्त करने के लिए एक फ़ंक्शन लिखना और इसे असाइन करना NULL
void main()
{
int *ptr;
ptr = new int;
ptr = newdelete(ptr);
}
(int*) newdelete (int *ptr)
{
delete(ptr);
return NULL;
}
तो निष्पादन के बाद, ptr
main
करने के लिए स्थानीय शून्य मान का आयोजन करेगा के रूप में मैं इसे newdelete
समारोह से लौट रहे हूँ। अगर मैंने नए डिलीट फ़ंक्शन में NULL
असाइन किया था, तो ptr
स्थानीय से newdelete
को हटा दिया जाएगा और ptr
स्थानीय main
पर नहीं होगा।
मुझे लगता है कि मेरा समाधान सही था, साक्षात्कारकर्ता ने इसे भी स्वीकार कर लिया। हालांकि, वह कुछ अन्य जवाब की उम्मीद कर रहा था। वह जोर दे रहा था कि मैं समारोह से NULL
वापस नहीं करता हूं और अभी भी वांछित परिणाम प्राप्त करता हूं।
क्या इसे पूरा करने का कोई तरीका है? मैं सोच सकता हूं कि एक और तर्क पारित कर रहा है जो पॉइंटर ptr
को स्थानीय main
पर पॉइंटर है, लेकिन मुझे नहीं लगता कि यह मेरे द्वारा किए गए कार्यों से बेहतर क्यों है!
मुझे लगता है कि आपका मतलब 'नया int' था क्योंकि 'नया' परिभाषित 'सी ++' ऑपरेटर नहीं है। – ereOn
सूचक के लिए एक संदर्भ पास करें। –
http://stackoverflow.com/questions/1265666/reason-why-not-to-have-a-delete-macro-for-c/1265681#1265681 – Goz