Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

सी प्रोग्राम का मेमोरी लेआउट

सी प्रोग्राम के लिए मेमोरी लेआउट नीचे जैसा है। कुछ स्तर हैं। ये हैं -

  • स्टैक सेगमेंट
  • हीप खंड
  • पाठ खंड
  • डेटा खंड

सी प्रोग्राम का मेमोरी लेआउट

अब देखते हैं कि इन अनुभागों के कार्य क्या हैं।

<टेबल> <थेड> क्रमांक <थ> अनुभाग और विवरण 1 ढेर
प्रक्रिया स्टैक में अस्थायी डेटा जैसे विधि/फ़ंक्शन पैरामीटर, वापसी पता और स्थानीय चर शामिल हैं। यह स्वचालित चर और फ़ंक्शन पैरामीटर के लिए आवंटित स्मृति का एक क्षेत्र है। यह फ़ंक्शन कॉल निष्पादित करते समय एक वापसी पता भी संग्रहीत करता है। स्टैक स्थानीय या स्वचालित चर, फ़ंक्शन मापदंडों को संग्रहीत करने और अगले पते या वापसी पते को संग्रहीत करने के लिए LIFO (लास्ट-इन-फर्स्ट-आउट) तंत्र का उपयोग करता है। रिटर्न एड्रेस फ़ंक्शन निष्पादन के पूरा होने के बाद वापस आने वाले पते को संदर्भित करता है। यह खंड आकार स्थानीय चर, फ़ंक्शन पैरामीटर और फ़ंक्शन कॉल के अनुसार परिवर्तनशील है। यह खंड उच्च पते से निम्न पते की ओर बढ़ता है।
2 ढेर
यह गतिशील रूप से मेमोरी को उसके रन टाइम के दौरान एक प्रक्रिया के लिए आवंटित किया जाता है। यह गतिशील स्मृति भंडारण के लिए आवंटित स्मृति का क्षेत्र है जैसे कि malloc() और calloc() कॉल के लिए। उपयोगकर्ता आवंटन के अनुसार इस खंड का आकार भी परिवर्तनशील है। यह खंड निम्न पते से उच्च पते की ओर बढ़ता है।
आइए अब देखें कि कुछ नमूना कार्यक्रमों के साथ सेगमेंट (डेटा और बीएसएस सेगमेंट) का आकार कैसे बदलता है। खंड का आकार "आकार" कमांड को निष्पादित करके जाना जाता है।
3 पाठ
इसमें प्रोग्राम काउंटर के मूल्य और प्रोसेसर के रजिस्टरों की सामग्री द्वारा दर्शाई गई वर्तमान गतिविधि शामिल है। इसे .text अनुभाग द्वारा दर्शाया जाता है। यह स्मृति में एक क्षेत्र को परिभाषित करता है जो निर्देश कोड संग्रहीत करता है। यह भी एक निश्चित क्षेत्र है।
4 डेटा
इस खंड में वैश्विक और स्थिर चर शामिल हैं। इसे .data अनुभाग और .bss द्वारा दर्शाया जाता है। .डेटा अनुभाग का उपयोग मेमोरी क्षेत्र को घोषित करने के लिए किया जाता है, जहां प्रोग्राम के लिए डेटा तत्व संग्रहीत किए जाते हैं। डेटा तत्वों की घोषणा के बाद इस खंड का विस्तार नहीं किया जा सकता है, और यह पूरे कार्यक्रम में स्थिर रहता है।
.bss अनुभाग भी एक स्थिर स्मृति अनुभाग है जिसमें प्रोग्राम में बाद में घोषित किए जाने वाले डेटा के लिए बफ़र्स होते हैं। यह बफर मेमोरी जीरो-फिल्ड होती है।

डेटा खंडों को दो और भागों में विभाजित किया जा सकता है।

<थेड>
वरिष्ठ संख्या अनुभाग और विवरण
1 आरंभिक डेटा खंड
यह ऑब्जेक्ट फ़ाइल या प्रोग्राम के वर्चुअल एड्रेस स्पेस का एक हिस्सा है जिसमें गैर-प्रारंभिक स्थिर और वैश्विक चर होते हैं। अन-इनिशियलाइज़्ड डेटा सेगमेंट को BSS (ब्लॉक स्टार्टेड बाय सिंबल) सेगमेंट भी कहा जाता है।
2 अन-इनिशियलाइज़्ड डेटा सेगमेंट
यह रीड-राइट है, क्योंकि रन टाइम के दौरान वैरिएबल के मान बदले जा सकते हैं। इस खंड का एक निश्चित आकार भी है।

  1. Google Chrome मेमोरी उपयोग/मेमोरी लीक समस्याएं?

    मुझे इंटरनेट ब्राउज़ करने के लिए Google Chrome का उपयोग करना पसंद है और इसका एक मुख्य कारण हमेशा से रहा है क्योंकि यह बहुत तेज़ है! मुझे सभी ऐड-ऑन के साथ फ़ायरफ़ॉक्स का ब्लोट कभी पसंद नहीं आया और इंटरनेट एक्सप्लोरर बिल्कुल धीमा है। माइक्रोसॉफ्ट एज आईई की तुलना में काफी तेज है, लेकिन मैं इतनी सारी अ

  1. RAM क्या है? | रैंडम एक्सेस मेमोरी डेफिनिशन

    RAM का मतलब रैंडम एक्सेस मेमोरी है , यह एक बहुत ही महत्वपूर्ण इलेक्ट्रॉनिक घटक है जो कंप्यूटर को चलाने के लिए आवश्यक है, RAM भंडारण का एक रूप है जिसका उपयोग CPU वर्तमान कार्यशील डेटा को अस्थायी रूप से संग्रहीत करने के लिए करता है। यह सभी प्रकार के कंप्यूटिंग उपकरणों जैसे स्मार्टफोन, पीसी, टैबलेट, सर

  1. क्या करें जब आपको कोई फ़ाइल रिकॉर्ड सेगमेंट अपठनीय हो?

    क्या आपने कभी “फ़ाइल रिकॉर्ड खंड अपठनीय है” का सामना किया है गलती? हां, तो इसे इग्नोर करने की गलती न करें। यह कुछ गंभीर समस्याएं पैदा कर सकता है जैसे हार्ड ड्राइव की विफलता से डेटा हानि होती है। आम तौर पर, त्रुटि तब प्रकट होती है जब आप त्रुटि के लिए डिस्क की जांच करते हैं या Windows बूट करते हैं। ध