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

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


C प्रोग्राम की रनटाइम मेमोरी कई सेगमेंट्स में व्यवस्थित होती है।

मेमोरी सेगमेंट्स (उच्च एड्रेस से निम्न एड्रेस)

HIGH ADDRESS
┌─────────────────────┐
│   Stack             │  ← ग्रोथ: नीचे की ओर (हाई → लो)
│   (लोकल वेरिएबल्स,   │     फंक्शन कॉल्स, रिटर्न एड्रेस
│    फंक्शन पैरामीटर्स) │
├─────────────────────┤
│   Heap              │  ← ग्रोथ: ऊपर की ओर (लो → हाई)
│   (malloc, new)     │     डायनामिक अलोकेशन
├─────────────────────┤
│   BSS (Uninitialized│  ← अनइनिशियलाइज़्ड ग्लोबल/स्टेटिक
│    Data Segment)    │     (जीरो-इनिशियलाइज़्ड)
├─────────────────────┤
│   Data Segment      │  ← इनिशियलाइज़्ड ग्लोबल/स्टेटिक
│   (Initialized)     │     (नॉन-जीरो मान)
├─────────────────────┤
│   Text Segment      │  ← कोड (रीड-ओनली)
│   (Code)            │     इंस्ट्रक्शन्स, लिटरल्स
└─────────────────────┘
LOW ADDRESS

विस्तृत विवरण

सेगमेंटकंटेंटरनटाइम व्यवहारउदाहरण
Text (Code)मशीन इंस्ट्रक्शन्स, स्ट्रिंग लिटरल्स, const डेटा (कभी-कभी)रीड-ओनली, फिक्स्ड आकारफंक्शन कोड
Initialized Dataग्लोबल/स्टेटिक वेरिएबल्स जिनके स्पष्ट इनिशियलाइजर हैंरनटाइम पर रीड-राइट, फिक्स्ड आकारint x = 10;
BSS (Uninit Data)अनइनिशियलाइज़्ड ग्लोबल/स्टेटिक वेरिएबल्सप्रोग्राम शुरू होने पर जीरो-फिल्ड, रीड-राइटint y; (ग्लोबल)
Heapडायनामिक मेमोरी (malloc, new)रनटाइम पर ग्रो/श्रिंक, प्रोग्रामर मैनेज्डmalloc(100)
Stackलोकल वेरिएबल्स, पैरामीटर्स, रिटर्न एड्रेस, सेव्ड रजिस्टर्सफंक्शन कॉल पर ग्रो, रिटर्न पर श्रिंक, LIFOint a; func();

आकार जांचने के लिए कमांड

size program        # सेगमेंट आकार दिखाता है (text, data, bss)
objdump -h program  # सेक्शन हेडर्स

स्टैक vs हीप

  • स्टैक: तेज, स्वचालित, सीमित आकार (~8MB लिनक्स पर), LIFO।
  • हीप: धीमा (अलोकेटर ओवरहेड), मैनुअल, बड़ा (वर्चुअल मेमोरी तक), फ्रैगमेंटेशन संभव।
  1. गूगल क्रोम मेमोरी उपयोग और लीक मुद्दों को समझना और ठीक करना गूगल क्रोम मेमोरी उपयोग और लीक मुद्दों को समझना और ठीक करना

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

  1. RAM क्या है? रैंडम एक्सेस मेमोरी के लिए व्यापक मार्गदर्शिका RAM क्या है? रैंडम एक्सेस मेमोरी के लिए व्यापक मार्गदर्शिका

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

  1.  फाइल रिकॉर्ड सेगमेंट अनरीडेबल  एरर को कैसे ठीक करें 'फाइल रिकॉर्ड सेगमेंट अनरीडेबल' एरर को कैसे ठीक करें

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