मान लीजिए कि मैं कुछ पॉइंटर्स में कुछ मेमोरी malloc लेकिन कार्यक्रम से बाहर निकलने से पहले उन्हें मुक्त नहीं करते हैं। क्या यह स्मृति स्वचालित रूप से बाहर निकलने पर मुक्त हो जाती है या जब तक मैं कंप्यूटर को पुनरारंभ नहीं करता तब तक स्मृति रिसाव तब तक जारी रहेगा?क्या कार्यक्रम निकलता है जब ढेर मुक्त हो जाता है?
उत्तर
उत्तर अक्सर होता है।
ढेर को मुक्त करना ओएस की जिम्मेदारी है। जबकि अधिकांश ओएस (विशेष रूप से मुख्यधारा ओएस) बाहर निकलने पर ढेर को मुक्त करता है, यह एम्बेडेड सिस्टम ओएस कहने के लिए जरूरी नहीं है।
जब आप ढेर पर आवंटित स्मृति के लिए कॉल करते हैं, तो इस स्मृति को प्रदान करने के लिए ओएस के कर्नेल स्पेस में एक सिस्टम कॉल किया जाता है। यह मेमोरी आपकी प्रक्रिया संरचना में मैप की गई है, जिसे ओएस द्वारा बनाए रखा जाता है। जब आपका प्रोग्राम निकलता है, ओएस एक साफ अप रूटिंग के माध्यम से जाता है, सभी फाइल डिस्क्रिप्टर बंद करता है, और अन्य मेमोरी (अन्य चीजों के साथ) आवंटन के लिए इस मेमोरी को मुक्त करता है।
इनमें से कुछ उत्तर यह कहकर गलत हैं कि यह संकलक निर्भर है। कंपाइलर यह नहीं कहता है 'हे इस कार्यक्रम को बाहर निकलने पर इस स्मृति को मुक्त करें'। यह समझ में नहीं आता है, क्या होता है यदि ओएस अप्रत्याशित रूप से प्रोग्राम को समाप्त कर देता है? नहीं, संकलक सिस्टम उत्पन्न करने के लिए ज़िम्मेदार है जब भी स्मृति आवंटन/डीलोकेशन स्पष्ट रूप से ढेर के लिए अनुरोध किया जाता है।
प्रक्रिया समाप्त होने पर कोई भी आधुनिक डेस्कटॉप ऑपरेटिंग सिस्टम संसाधनों को पुनः प्राप्त करेगा। कोई स्मृति रिसाव नहीं होगा।
मेमोरी आपके प्रोग्राम या libc द्वारा मुक्त नहीं किया जाएगा, लेकिन सभी आधुनिक ऑपरेटिंग सिस्टम पर ऑपरेटिंग सिस्टम द्वारा मुक्त किया जाएगा। वे विशिष्ट प्रक्रियाओं को स्मृति आवंटित करते हैं और प्रक्रिया समाप्त होने पर स्मृति को साफ करते हैं।
सभी ऑपरेटिंग सिस्टम ऐसा नहीं करेंगे। – 75inchpianist
यह इस बात पर निर्भर करता है कि आप किस ओएस का उपयोग कर रहे हैं। जाहिर है, यदि आवश्यक हो तो आपका प्रोग्राम बाहर निकलने पर आपके बाद किसी भी आधुनिक डेस्कटॉप ओएस को साफ़ करने के लिए डिज़ाइन किया गया है।
यदि आप सी मानक देखते हैं, तो यह कार्यान्वयन विशिष्ट है ताकि आप इसके बारे में सुनिश्चित न हों।
लेकिन प्रक्रिया समाप्त होने के बाद अधिकांश ओएस स्मृति को मुक्त कर देगा, लेकिन यह कुछ छोटे/सरल प्लेटफ़ॉर्म पर मामला नहीं हो सकता है।
यह एक प्रश्न नहीं है। ढेर कैसे लागू किया जाता है संकलक पर निर्भर करता है और एक कार्यक्रम के बाहर ओएस क्या करता है। जब कोई प्रोग्राम निकलता है तो मेरे ज्ञान के लिए सभी आधुनिक ओएस मुक्त मेमोरी संसाधन। यह कुछ एम्बेडेड सिस्टम या ड्राइवरों पर सच नहीं हो सकता है।
कार्यक्रम से बाहर निकलने के बाद ढेर को मुक्त किया जाता है संकलक से स्वतंत्र होता है। यह एक ओएस मुद्दा है। – 75inchpianist
हाँ, जो मैंने कहने की कोशिश की। लेकिन अच्छी तरह से नहीं। शिकायतकर्ता ने कुछ कहा है कि ढेर कैसे लागू किए जाते हैं। आपके पास ओएस पर सी प्रोग्राम हो सकते हैं जिनमें वर्चुअल एड्रेस स्पेस या मेमोरी मैनेजमेंट नहीं है। सभी आधुनिक प्रत्यारोपण पर संकलक सिस्टम कॉल को कॉल अग्रेषित करता है लेकिन यह आवश्यक नहीं है – rerun
- 1. ढेर C++ तनाव मुक्त जब लुआ
- 2. ढेर या ढेर पर जावास्क्रिप्ट बंद हो जाता है?
- 3. जेनेरिक सूची का ढेर साफ़ हो जाता है जब धक्का सूची साफ़ हो जाती है
- 4. यूटेक्स्टफील्ड साफ़ हो जाता है जब हटाया जाता है
- 5. घटना जब FragmentTransaction पूरा हो जाता है
- 6. ईवेंट जब इंस्टॉल हो जाता है (एंड्रॉइड)
- 7. सी ++ विनाशक: जब स्मृति मुक्त हो जाती है?
- 8. अनुप्रयोग क्रैश हो जाता है जब मार्शमैलो
- 9. जब जास्मीन परीक्षण पूरा हो जाता है
- 10. क्या होता है जब ढेर और ढेर कोलाइड
- 11. जब मैं 20% ढेर अभी भी मुक्त हूं तो मुझे आउटऑफमेमरी क्यों मिलती है?
- 12. क्या एआरटी ढेर को ढंकता है?
- 13. jQuery/जावास्क्रिप्ट: मेरा रिकर्सिव सेटटाइमआउट फ़ंक्शन तेज़ हो जाता है जब टैब निष्क्रिय हो जाता है
- 14. जब ब्राउज़र बंद हो जाता है तो Omniauth सत्र समाप्त हो जाता है
- 15. क्या एनएसवीव कंट्रोलर अधिसूचित हो जाता है जब उसका दृश्य जोड़ा या हटा दिया जाता है?
- 16. जेपीओपअपमेनू बंद हो जाता है जब बच्चे पॉपअप खुलता है
- 17. वस्तुओं के लिए क्या होता है जब दुभाषिया बंद हो जाता है
- 18. पाठ हो जाता है "ब्लॉक वाले" जब BackColor पारदर्शी है
- 19. क्या यह स्मृति रिसाव माना जाता है?
- 20. एक फाइबोनैकी ढेर क्यों एक फाइबोनैकी ढेर कहा जाता है?
- 21. JSON.stringify हर बार डबल कोट्स से बच निकलता है जब
- 22. जब मूल वर्ग गुंजाइश से बाहर हो जाता है तो धागे का क्या होता है
- 23. डबल मुक्त या भ्रष्टाचार ग कार्यक्रम
- 24. क्या EditText.getText() कभी शून्य हो जाता है?
- 25. जब MVAr कचरा एकत्र किया जाता है
- 26. विनाशक - क्या ऐप क्रैश हो जाता है यदि ऐप
- 27. क्या जेवीएम अधिकतम ढेर आकार गतिशील हो सकता है?
- 28. ideviceinstaller "लॉकडॉन्ड से कनेक्ट नहीं हो सका।" बाहर निकलता है।
- 29. क्या एक से अधिक एडब्ल्यूटी कार्यक्रम कतार हो सकती है?
- 30. UILabel दृश्य गायब हो जाता है जब 8192
[इस] (http://stackoverflow.com/questions/2215259/will-malloc-implementations-return-free-ed-memory-back-to-the-system) और [यह] (http: //stackoverflow.com/questions/654754/what-really-happens-when-you-dont-free-after-malloc) भी। –