/ / सी ++ मेमोरी लीक और कचरा मेमोरी - सी ++, मेमोरी-मैनेजमेंट, मेमोरी लीक

सी ++ मेमोरी लीक और कचरा मेमोरी - सी ++, मेमोरी-मैनेजमेंट, मेमोरी लीक

मैं देख सकता हूं कि अगर हम गतिशील रूप से स्मृति आवंटित करते हैंसी ++ में, लेकिन इसे सही तरीके से प्रबंधित न करें, हमारे पास कचरा स्मृति हो सकती है, और हम अनिवार्य रूप से स्मृति रिसाव प्राप्त कर सकते हैं, और यह स्पष्ट है कि ऐसा क्यों होता है। क्योंकि यदि उदाहरण के लिए, हमारे पास एक सूचक है जो स्मृति पते को इंगित करता है, और हम वर्तमान सूचक को मुक्त करने से पहले इस सूचक को किसी अन्य पता स्थान पर असाइन करते हैं तो यह एक मुद्दा है। लेकिन जो मैं समझ नहीं पा रहा हूं, यह है कि मान लें कि हमारे पास एक खराब प्रोग्राम है जो कचरा स्मृति जोड़ता रहता है, लेकिन जब हम प्रोग्राम बंद करते हैं, तो सब कुछ सामान्य हो जाता है। उदाहरण के लिए, हमारे पास एक कचरा स्मृति है जिसे सी ++ प्रोग्राम के साथ पेश किया गया था, इसलिए उस कचरा स्मृति को इंगित करने वाला कोई और संकेतक नहीं है, और कार्यक्रम को बंद करने के बाद कैसे आते हैं, सभी कचरा स्मृति मुक्त हो जाती है? कार्यक्रम बंद होने से पहले प्रोग्राम कैसे कचरा स्मृति को साफ करने के बारे में जानता है?

उत्तर:

जवाब के लिए 3 № 1

कोई कचरा स्मृति नहीं है, आपका कार्यक्रम नहीं हैजो स्मृति आवंटित और मुक्त करता है। इसका अंतर्निहित ओएस है। आप अपनी सेवाओं का उपयोग कर, ओएस के शीर्ष पर काम कर रहे हैं। हीप मेमोरी और फ्री स्टोर केवल एक अमूर्त है जो ये सेवाएं प्रदान करता है (इस तरह की फाइलों के अन्य सार तत्वों के बीच, "मैं" इस अद्वितीय सीपीयू में चल रही एकमात्र प्रक्रिया हूं ", आदि)


उत्तर № 2 के लिए 1

विंडोज ओएस पर ऑपरेटिंग सिस्टम किसी भी मेमोरी को साफ़ करता है जिसे एक प्रक्रिया द्वारा आवंटित किया गया था। इसलिए, यह मूल रूप से उस स्थान को फेंक देता है जो किसी प्रक्रिया में दिया गया था, जिसमें यह शामिल नहीं था।