क्या उबंटू स्वचालित रूप से सी प्रोग्राम द्वारा आवंटित मेमोरी को जारी करता है क्योंकि प्रोग्राम समाप्त हो जाता है?


11

मैंने malloc()फ़ंक्शन का उपयोग करके मेमोरी को कोड आवंटित करने वाला सी प्रोग्राम लिखा है । यदि मैं free()फ़ंक्शन का उपयोग करके मेमोरी को मुक्त नहीं करता हूं, तो क्या उबंटू इसे स्वचालित रूप से जारी करेगा?


इसका उबंटू, कर्नेल की जिम्मेदारी से कोई लेना-देना नहीं है।
उपयोगकर्ता

@user: उबंटू का एक विशेष संस्करण लिनक्स कर्नेल के संस्करणों में से एक के ऊपर चलना चाहिए। तो इसका उबंटू के साथ कुछ करना है ताकि यह पता चल सके कि यह जिस कर्नेल पर चल रहा है वह मेमोरी को स्वचालित रूप से रिलीज़ करता है या नहीं।
ऐशबंटू

जवाबों:


16

हाँ।

कर्नेल प्रोग्राम की समाप्ति पर एक प्रोग्राम द्वारा आवंटित सभी संसाधनों को जारी करेगा।

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

do_exit()समारोह में ही कार्य करने के प्रदर्शन करती है। इसके निष्पादन को समाप्त करने के बाद, प्रोग्राम के आवंटित संसाधन कर्नेल द्वारा जारी किए जाते हैं और आगे के उपयोग के लिए सिस्टम में वापस आ जाते हैं।

स्रोत


7
लेकिन यह निश्चित रूप से मुक्त करने के लिए "भूल" के लिए कोई बहाना नहीं है ... ()
हेगन वॉन Eitzen
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.