अगर मैं प्रोग्राम किया - यह जाने बिना - एक स्मृति रिसाव, और आवेदन समाप्त हो जाता है, लीक स्मृति मुक्त हो जाता है?प्रोग्राम बाहर निकलने पर लीक मेमोरी मुक्त हो जाती है?
उत्तर
हां, एक "मेमोरी लीक" बस स्मृति है कि एक प्रक्रिया का कोई संदर्भ नहीं है, और इस प्रकार अब मुक्त नहीं हो सकता है। ओएस अभी भी एक प्रक्रिया को आवंटित सभी स्मृति का ट्रैक रखता है, और जब प्रक्रिया समाप्त हो जाती है तो इसे मुक्त कर दिया जाएगा।
अद्यतन
अधिकांश मामलों में ओएस स्मृति मुक्त होगा - के रूप में सामान्य विंडोज, लिनक्स, सोलारिस, आदि की "जायके" के मामले में हालांकि यह ध्यान रखें कि में महत्वपूर्ण है विभिन्न रीयल-टाइम ऑपरेटिंग सिस्टम जैसे विशेष वातावरण, प्रोग्राम समाप्त होने पर स्मृति को मुक्त नहीं किया जा सकता है।
आपके प्रोग्राम को निष्पादित करने वाला ओएस आमतौर पर क्लीनअप मेमोरी करता है जो स्पष्ट रूप से मुक्त नहीं होता है और हैंडल जो स्पष्ट रूप से बंद नहीं होते हैं, लेकिन यह सी ++ मानक द्वारा गारंटी नहीं है। आपको कुछ एम्बेडेड डिवाइस मिल सकते हैं जो आपकी मेमोरी लीक को मुक्त नहीं करते हैं।
यह कहा जा रहा है कि विंडोज़ और लिनक्स के सभी distros जो मैंने कभी देखा है स्मृति मेमोरी लीक मुक्त करते हैं।
आप आसानी से इसे जांचने के लिए मेमोरी लीक का एक विशाल पाश बना सकते हैं। अपने रैम उपयोग को बढ़ने के लिए देखें और फिर अपना प्रोग्राम बंद करें। आप देखेंगे कि राम का उपयोग वापस चला जाता है। जब सी का उपयोग कर
एक अन्य विचार पर विचार करने के ++ कि फिर अपने विनाशकर्ता भी कहा जाता है नहीं किया जा रहा है अगर आप अपने ढेर आबंटित स्मृति को हटाने नहीं हैं। कभी-कभी आपके अन्य दुष्प्रभाव भी होंगे यदि आपके विनाशकों को नहीं कहा जाता है।
आप एक डेस्कटॉप ओएस (विंडोज, लिनक्स आदि) पर चल रहे हैं? यदि हां, तो, सामान्य रूप से सिस्टम प्रोग्राम से जुड़े किसी भी स्मृति को मुक्त कर देगा जब प्रोग्राम निकलता है।
क्या स्मृति आप लीक पर निर्भर करता है। कुछ स्मृति को ओएस द्वारा पुनः दावा नहीं किया जा सकता है। अधिकांश ओएसई पर अधिकांश मेमोरी प्रक्रिया समाप्त होने पर स्वचालित रूप से पुनः दावा की जाएगी।
कुछ स्मृति को ओएस द्वारा पुनः दावा नहीं किया जा सकता है - जैसे कि क्या? –
कुछ वास्तविक समय ओएस पर, मैंने विशेष ईथरनेट बफर ब्लॉक देखे हैं जो प्रक्रिया समाप्त होने पर साफ़ नहीं हो जाते हैं। –
साझा स्मृति को आमतौर पर पुनः दावा नहीं किया जाता है, क्योंकि आप इसे क्षणिक प्रक्रियाओं के उपयोग के लिए जारी रखना चाहते हैं। –
जहां तक मुझे पता है, कार्यक्रम समाप्त होने के बाद एक आधुनिक ऑपरेटिंग सिस्टम इस स्मृति को मुक्त कर देगा।
सामान्यतः, हां। कुछ सिस्टम साझा मेमोरी ब्लॉक जैसी चीज़ों का समर्थन करते हैं जो किसी प्रोग्राम से बाहर निकलने पर स्वचालित रूप से मुक्त नहीं होते हैं। अधिकांश अभी भी एक संदर्भ गिनती रखने के लिए और जब सभी कार्यक्रमों है कि यह बाहर निकलने खोला इसे हटा, लेकिन कुछ नहीं (जैसे, 16-बिट Windows वस्तुओं के कुछ प्रकार है कि जब भी कुछ भी नहीं उन्हें करने के लिए भेजा आवंटित रहेगा था है - यद्यपि यह आमतौर पर किसी समस्या के कारण जमा होने से पहले अन्य कारणों से दुर्घटनाग्रस्त हो जाता है ...)
- 1. कौन से ऑपरेटिंग सिस्टम प्रोग्राम से बाहर निकलने पर स्मृति मुक्त नहीं करेंगे?
- 2. मेमोरी लीक - सिग्नल 9
- 3. बाहर निकलने पर डबल पुष्टिकरण
- 4. एंबेडेड आयरनपीथन मेमोरी लीक
- 5. कीबोर्ड पर मेमोरी लीक
- 6. चक्रीय जोड़ना/डीओएम नोड्स को हटाने से जावास्क्रिप्ट में मेमोरी लीक हो जाती है?
- 7. मेमोरी लीक
- 8. UIDocumentInteractionController बाहर निकलने पर क्रैशिंग
- 9. पीईक्यूटी आवेदन में बाहर निकलने पर संकेत
- 10. क्या गतिशील सरणी स्वचालित रूप से तब तक समाप्त हो जाती है जब यह दायरे से बाहर हो जाती है?
- 11. क्या किसी फ़ंक्शन से गतिशील रूप से आवंटित सरणी लौटने से मेमोरी लीक हो जाती है?
- 12. मेमोरी मेमोरी लीक इश्यू
- 13. मेमोरी लीक सी ++
- 14. सी ++ विनाशक: जब स्मृति मुक्त हो जाती है?
- 15. मेमोरी लीक
- 16. एसबीजेसन - मेमोरी लीक है?
- 17. क्या कोई प्रोग्राम बाहर निकलने पर सी ++ में डिलीट करने का कोई कारण है?
- 18. पायथन - मेमोरी लीक
- 19. shell_exec से उत्पादन और बाहर निकलने स्थिति हो रही है()
- 20. मेमोरी लीक
- 21. मेमोरी लीक
- 22. मेमोरी लीक समस्या
- 23. मेमोरी से बाहर निकलने के लिए प्रोग्राम को कैसे लागू किया जाए?
- 24. ओपनएसएसएल :: एसएसएल_library_init() मेमोरी लीक
- 25. एंड्रॉइड ड्रायबल्स मेमोरी लीक
- 26. कार्यक्रम बाहर निकलने के
- 27. रेल 3.0.7 मेमोरी लीक
- 28. सीयूडीए मेमोरी कैसे प्रबंधित की जाती है?
- 29. एआरसी मेमोरी लीक
- 30. PHP इमेजिक मेमोरी लीक
प्रश्न: क्या ओएस सभी आवंटन का ट्रैक रखता है? आपके द्वारा आवंटित कोई भी ढेर स्मृति प्रक्रिया की वर्चुअल मेमोरी स्पेस से आता है - जब प्रक्रिया समाप्त हो जाती है, तो उस स्थान को सिस्टम थोक पर वापस दिया जाता है, है ना? मुझे नहीं पता कि अतिरिक्त बहीखाता क्यों जरूरी होगी, क्योंकि आवंटन करने की प्रक्रिया एकमात्र प्रक्रिया (उपयोगकर्तालैंड में) है, वैसे भी उन पृष्ठों तक पहुंच के साथ। या क्या मुझे गलत सिखाया गया है? –
@ जस्टिन: ओएस को जानने के बिना मुझे नहीं लगता कि यह मान्य है। शायद आप जिस ओएस के बारे में बात कर रहे हैं उसे स्पष्ट रूप से निर्दिष्ट करें। –
नोट: मानक इस बारे में कुछ भी नहीं कहता है। यह भी गारंटी नहीं है। इस तरह यह सबसे अधिक काम करता है, अगर नहीं, तो आधुनिक ओएस है, लेकिन उन्हें पहले और अतीत में नहीं थे जो दोनों आम थे और इस सफाई को नहीं किया। –