मेरे ज्ञान के अधिकांश Windows विशिष्ट नहीं है, इसलिए मेरे साथ भालू:
ढेर और ढेर स्मृति में विभिन्न क्षेत्रों को संदर्भित करते हैं (लेकिन हम अभी भी प्रत्येक मामले में मुख्य स्मृति के बारे में बात कर रहे हैं)। यह किसी भी भाषा के लिए विशेष नहीं है। ढेर कम स्मृति पते में रहता है और ऊपर बढ़ता है; ढेर उच्च स्मृति पते में रहता है और नीचे बढ़ता है। यह उन्हें ओवरलैपिंग से रखने के लिए है (जो बहुत बुरा होगा)।
32-बिट आर्किटेक्चर पर, ईबीपी और ईएसपी रजिस्ट्रार वर्तमान स्टैक फ्रेम का ट्रैक रखते हैं। ईबीपी बेस पॉइंटर है - यह वर्तमान स्टैक फ्रेम के उच्च पते पर इंगित करता है। ईएसपी स्टैक पॉइंटर है और यह वर्तमान स्टैक फ्रेम के निम्न पते को इंगित करता है।
याद रखें कि मुक्त/आवंटित ढेर और ढेर स्मृति की अवधारणा अधिकतर आवेदन स्तर पर प्रासंगिक है। मशीन स्तर पर, सभी मेमोरी समान दिखती हैं - यह ट्रैक रखने के लिए प्रोग्रामर (या कंपाइलर) पर निर्भर करता है कि कौन से मेमोरी सेगमेंट उपयोग में हैं।
ढेर के संयोजन द्वारा प्रबंधित किया जाता है: निर्देश जो कॉल कहते हैं, और ईबीपी और ईएसपी में स्पष्ट संशोधन। ईएसपी के नीचे कुछ भी मुक्त माना जाता है; तो स्मृति मुक्त करने के लिए आप बस ईएसपी में जोड़ सकते हैं।
ढेर स्मृति आवंटन विधियों द्वारा प्रबंधित किया जाता है; दस्तावेज here पाया जा सकता है। मुझे Winows के विवरणों के बारे में निश्चित नहीं है, लेकिन आम तौर पर कुछ मेमोरी मैनेजर होंगे जिनके पास यह सुनिश्चित करने की ज़िम्मेदारी है कि एक से अधिक एप्लिकेशन को स्मृति का कोई ब्लॉक आवंटित नहीं किया गया है।
जानकारी के लिए धन्यवाद, लेकिन यह और सवाल उठाता है xD!खिड़कियों को कैसे पता चलेगा कि कच्चे रैम में ढेर और ढेर को मानचित्रित करना है ताकि यह अन्य प्रक्रियाओं के साथ ओवरलैप या संघर्ष न करे? विशेष रूप से यदि यह आकार में गतिशील रूप से बदल रहा है? – Daniel
@ डैनियल: अन्य प्रक्रियाओं को wrt, एक ओएस वर्चुअल मेमोरी का उपयोग करता है। प्रत्येक प्रक्रिया मेमोरी (वर्चुअल एड्रेस स्पेस) के अपने दृश्य को देखती है। और हां, प्रोसेसर में वर्चुअल एड्रेस को भौतिक एक में बदलने के लिए एक तंत्र है। Http://en.wikipedia.org/wiki/Virtual_memory देखें – Bahbar