कई पुस्तकों और ट्यूटोरियल्स में, मैंने मेमोरी मैनेजमेंट के अभ्यास पर बल दिया है और महसूस किया है कि कुछ रहस्यमय और भयानक चीजें होंगी अगर मैंने इसका उपयोग करने के बाद मेमोरी को मुक्त नहीं किया।
मैं अन्य प्रणालियों के लिए नहीं बोल सकता (हालांकि मेरे लिए यह मानना उचित है कि वे एक समान अभ्यास को अपनाते हैं), लेकिन कम से कम विंडोज पर, कर्नेल को मूल रूप से अधिकांश संसाधनों को साफ करने की गारंटी दी जाती है (एक विषम कुछ के अपवाद के साथ) कार्यक्रम समाप्ति के बाद एक कार्यक्रम। जिसमें ढेर स्मृति, विभिन्न अन्य चीजों के बीच शामिल हैं।
मैं समझता हूं कि उपयोगकर्ता द्वारा उपलब्ध कराने के लिए आप इसका उपयोग करने के बाद किसी फ़ाइल को बंद क्यों करना चाहेंगे या आप बैंडविड्थ को बचाने के लिए किसी सर्वर से जुड़े सॉकेट को अलग क्यों करना चाहेंगे, लेकिन यह मूर्खतापूर्ण लगता है अपने प्रोग्राम द्वारा उपयोग की जाने वाली अपनी सभी मेमोरी को माइक्रोएंनेज करना है।
अब, मैं मानता हूं कि यह प्रश्न व्यापक है क्योंकि आपको अपनी स्मृति को कैसे संभालना चाहिए यह इस पर आधारित है कि आपको कितनी स्मृति की आवश्यकता है और जब आपको इसकी आवश्यकता हो, तो मैं इस प्रश्न के दायरे को इस तक सीमित कर दूंगा: यदि मुझे एक टुकड़े का उपयोग करने की आवश्यकता है मेरे कार्यक्रम के जीवनकाल में स्मृति, क्या कार्यक्रम समाप्ति से ठीक पहले इसे मुक्त करना आवश्यक है?
संपादित करें: एक डुप्लिकेट के रूप में सुझाए गए सवाल ऑपरेटिंग सिस्टम के यूनिक्स परिवार के लिए विशिष्ट थे। इसका शीर्ष उत्तर भी लिनक्स के लिए विशिष्ट उपकरण निर्दिष्ट करता है (जैसे Valgrind)। यह सवाल सबसे "सामान्य" गैर-एम्बेडेड ऑपरेटिंग सिस्टम को कवर करने के लिए है और यह एक प्रोग्राम के जीवनकाल में आवश्यक मुक्त मेमोरी के लिए एक अच्छा अभ्यास क्यों नहीं है या नहीं है।