यह समझना कि सी और सी ++ में कुशल प्रोग्रामिंग के लिए डेटा मेमोरी में कैसे संग्रहीत किया जाता है। संरचनाएं और संघ मौलिक डेटा प्रकार हैं जो स्मृति लेआउट और आकार को प्रभावित करते हैं। यह लेख बताता है कि कैसे इन डेटा प्रकारों के लिए स्मृति आवंटित की जाती है और उनके आकार को सही ढंग से कैसे गणना की जाती है।

संरचनाओं की स्मृति लेआउट

C और C++ में संरचनाएं चर के संग्रह हैं, संभवतः विभिन्न प्रकारों में, एक ही नाम के तहत मिलकर समूहीकृत हैं। कम्पाइलर प्रत्येक सदस्य को क्रमिक रूप से रखने के द्वारा एक संरचना के लिए स्मृति आवंटित करता है, जिससे संरेखण आवश्यकताओं को पूरा करने के लिए संभावित पैडिंग होती है।

संरचना का कुल आकार इसके सदस्यों के आकार का योग है और संरेखण के लिए जोड़े गए किसी भी पैडिंग को भी शामिल किया गया है। पैडिंग यह सुनिश्चित करता है कि प्रत्येक सदस्य अपने आकार या संरेखण की आवश्यकता के अनुसार एक पते पर शुरू होता है।

यूनियनों की मेमोरी लेआउट

संघ संरचना के समान हैं लेकिन स्मृति आवंटन में भिन्न हैं। संघ के सभी सदस्य एक ही स्मृति स्थान को साझा करते हैं, जो इसके सबसे बड़े सदस्य के आकार के बराबर है। यह कई डेटा प्रकारों को समान स्मृति स्थान पर कब्जा करने की अनुमति देता है।

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

डेटा आकार की गणना

संरचनाओं और संघों के आकार की गणना में व्यक्तिगत सदस्यों के आकार को संक्षेप में शामिल किया गया है और संरेखण के लिए पैडिंग पर विचार किया गया है। sizeof] ऑपरेटर C और C++ में कुल आकार बाइट्स प्रदान करता है।

उदाहरण के लिए, एक संरचना को और के साथ विचार करें। संरचना का आकार के आकार पर निर्भर करता है, ] का आकार, और पैडिंग संरेखण के लिए जोड़ा गया। इसी तरह, एक संघ का आकार इसके सबसे बड़े सदस्य का आकार है।

  • sizeof का उपयोग कुल आकार निर्धारित करने के लिए करें।
  • प्रत्येक सदस्य के लिए संरेखण आवश्यकताओं पर विचार करें।
  • पैडिंग के लिए खाता कम्पाइलर द्वारा जोड़ा गया।
  • याद रखें कि संघ सभी सदस्यों के बीच स्मृति साझा करते हैं।