मैंने malloc()
फ़ंक्शन का उपयोग करके मेमोरी को कोड आवंटित करने वाला सी प्रोग्राम लिखा है । यदि मैं free()
फ़ंक्शन का उपयोग करके मेमोरी को मुक्त नहीं करता हूं, तो क्या उबंटू इसे स्वचालित रूप से जारी करेगा?
मैंने malloc()
फ़ंक्शन का उपयोग करके मेमोरी को कोड आवंटित करने वाला सी प्रोग्राम लिखा है । यदि मैं free()
फ़ंक्शन का उपयोग करके मेमोरी को मुक्त नहीं करता हूं, तो क्या उबंटू इसे स्वचालित रूप से जारी करेगा?
जवाबों:
हाँ।
कर्नेल प्रोग्राम की समाप्ति पर एक प्रोग्राम द्वारा आवंटित सभी संसाधनों को जारी करेगा।
यह do_exit()
कार्य kernel/exit.c
उसके निष्पादन को समाप्त करने के बाद परिभाषित किया गया है; do_exit()
समारोह निष्पादन ही घटनाओं की एक संख्या से शुरू किया जा सकता है, सबसे अधिक एक स्पष्ट द्वारा exit()
syscall अपने नियमित परिकलन के दौरान या एक अंतर्निहित द्वारा इस कार्यक्रम के द्वारा कहा जाता है exit()
इसकी समाप्ति पर इस कार्यक्रम के द्वारा कहा जाता है syscall (सी संकलक एक देता है के रूप में exit()
के बाद syscall main()
की वापसी)। अन्य कारणों में अनहैंडेबल / नॉट इग्नोरबल सिग्नल या अपवाद का रिसेप्शन शामिल है।
do_exit()
समारोह में ही कार्य करने के प्रदर्शन करती है। इसके निष्पादन को समाप्त करने के बाद, प्रोग्राम के आवंटित संसाधन कर्नेल द्वारा जारी किए जाते हैं और आगे के उपयोग के लिए सिस्टम में वापस आ जाते हैं।