2009-05-14 14 views
9

डुप्लिकेट: What REALLY happens when you don’t free after malloc?स्मृति के साथ क्या होता है जो प्रोग्राम के अंत के बाद मुक्त नहीं होता है?

मान लें, उदाहरण के लिए:

int main() 
{ 
    char* test = new char[50000]; 
    return 0; 
} 

क्या कार्यक्रम के बाद आबंटित स्मृति के लिए होता समाप्त किया था? क्या यह तुरंत अन्य अनुप्रयोगों के लिए मुक्त हो जाता है? या शायद कुछ समय बाद? या शायद यह सिस्टम के लिए हमेशा के लिए खो गया है? या यह डिस्क पर कभी भी रैम पर वापस नहीं आ जाता है? या शायद कुछ पूरी तरह से अलग है?

मुझे पता है पर प्रमुख 3 ओएस क्या होता है चाहते हैं: (, XP और ऊपर अगर कोई मतभेद हैं) विंडोज, लिनक्स, मैक ओएस एक्स

उत्तर

2

यह दूर, ऑपरेटिंग सिस्टम चला जाता है के रूप में इसे साफ करो। प्रोग्राम के लिए जो भी मेमोरी मांगी गई, ओएस के बारे में पता है, इसलिए जब प्रोग्राम बंद हो जाता है, तो इसके द्वारा उपयोग की जाने वाली किसी भी मेमोरी को मुक्त किया जाता है, और अन्य प्रोग्राम्स द्वारा उपयोग के लिए उपलब्ध है। मेरा मानना ​​है कि यह तुरंत उपलब्ध हो जाता है।

1

ओएस सिस्टम स्मृति के लिए यह पुनः प्राप्त करना चाहिए एक बार का उपयोग कर प्रक्रिया यह समाप्त हो गया है।

1

विंडोज़ में अच्छी तरह से प्रोग्राम ऑपरेटिंग सिस्टम द्वारा स्मृति को मुक्त कर दिया जाता है क्योंकि प्रोग्राम बंद हो जाता है। यदि यह बड़ी मात्रा में स्मृति है तो इसमें कुछ समय लग सकता है।

जहां तक ​​मुझे याद है जब मैंने यूनिक्स के विभिन्न स्वादों के साथ काम किया था, यह सभी ऑपरेटिंग सिस्टम के लिए समान है।

0

उत्तर निश्चित रूप से ऑपरेटिंग सिस्टम पर निर्भर करेगा, लेकिन सामान्य रूप से ओएस प्रोग्राम समाप्त होने पर किसी भी शेष आवंटित/मैप किए गए मेमोरी को पार कर जाएगा। लिनक्स के मामले में, प्रक्रिया समाप्त होने से पहले क्लीनअप पूरा हो जाएगा (जेड राज्य में प्रवेश करता है)।

6

किसी एमएमयू (जिसमें यूनिक्स, लिनक्स, ओएसएक्स और विंडोज एनटी परिवार शामिल है) के साथ किसी भी ओ/एस पर प्रक्रिया में डेटा संरचना है जिसका उपयोग टीबी एमएमयू के लिए पेज मैपिंग सेट अप करने के लिए किया जाता है। जब प्रक्रिया समाप्त हो जाती है तो यह मानचित्रण जारी किया जाता है और पृष्ठों को ऑपरेटिंग सिस्टम के मुफ्त पूल में जोड़ा जाता है।

गैर संरक्षित-स्मृति ओ/एस प्लेटफॉर्म जैसे कि डॉस या कुछ रीयलटाइम ऑपरेटिंग सिस्टम पर स्मृति को स्पष्ट रूप से मुक्त करने की आवश्यकता हो सकती है और ओ/एस पूल संभवतः स्मृति को रिसाव कर सकता है यदि यह सही ढंग से सही नहीं है। ब्लेड रनर

यह ओएस पर काफी हद तक निर्भर करता है में रॉय बैटी -

3

सभी उन क्षणों बारिश में आँसू
की तरह समय में खो जाएगा ...
। अधिकांश ओएस आपके लिए स्मृति मुक्त कर देंगे, कुछ नहीं करेंगे। यदि आप अब डेस्कटॉप ओएस के लिए एक दिन विकसित करते हैं, तो आप पूरी तरह से सुनिश्चित हो सकते हैं कि स्मृति मुक्त हो जाएगी। यह एम्बेडेड सिस्टम या मोबाइल फोन में कम है, जहां मामलों में स्मृति वास्तव में ओएस के अगले रीबूट तक खो जाएगी।

संबंधित मुद्दे

 संबंधित मुद्दे