मैं अच्छी सी प्रोग्रामिंग प्रथाओं और मेरे दोस्त के बारे में सीख रहा हूँसंभव डुप्लिकेट:
Setting variable to NULL after free …क्या यह हमेशा अच्छा() - इनके बाद पॉइंटर्स को न्यूल पर सेट करने के लिए एक अच्छा अभ्यास है?
बताया मुझे हमेशा मुक्त() उन्हें ing (या एक फोन करने के बाद शून्य की ओर इशारा स्थापित करने के लिए विशिष्ट मुक्त समारोह)।
उदाहरण के लिए:
char* ptr = malloc(100);
...
free(ptr);
ptr = NULL;
या
struct graph* graph = create_graph();
...
destroy_graph(graph);
graph = NULL;
क्यों यह एक अच्छा अभ्यास है?
अद्यतन: उत्तर पढ़ने के बाद, यह मेरे लिए एक भयानक प्रथा प्रतीत होता है! मैं संभव डबल-फ्री() त्रुटियों को छुपा रहा हूं। यह संभवतः एक अच्छा अभ्यास कैसे हो सकता है? मैं हैरान हूँ।
धन्यवाद, बोडा साइडो।
@bodacydo पृष्ठ के दाईं ओर स्थित "संबंधित" प्रश्नों पर नज़र डालें। –
धन्यवाद नील और माइकल। वह प्रश्न वास्तव में मेरे प्रश्न का उत्तर देता है। उत्तरों को पढ़ने के बाद मेरे पास एक और सवाल है - क्या न्यूल में पॉइंटर को वास्तव में त्रुटियों को छिपाना नहीं है? डबल फ्री() अब पता नहीं चला है! अब मैं उलझन में हूं क्योंकि यह वास्तव में दिखाए जाने से गलतियों को छुपा रहा है। – bodacydo
कैसे? एक सूचक को मुक्त करना और इसे NULL पर सेट करना स्मृति को मुक्त करने की अनुमति देता है। यदि आप फिर नल मुक्त करने का निर्णय लेते हैं, तो आपको एक जोर या कुछ अन्य चेतावनी मिलनी चाहिए।डबल फ्रीिंग मेमोरी नल मुक्त करने से ट्रैक करने के लिए बहुत कठिन है। –