सी संरचनाओं में मेमोरी संरेखण
सी संरचनाओं के साथ काम करते समय, मेमोरी संरेखण को समझना महत्वपूर्ण है। मेमोरी संरेखण से तात्पर्य विशिष्ट सीमाओं पर मेमोरी में डेटा के प्लेसमेंट से है। 32-बिट मशीन पर, मेमोरी आमतौर पर 4-बाइट सीमाओं पर संरेखित होती है।
संरचनाओं के लिए मेमोरी संरेखण
निम्नलिखित संरचना पर विचार करें:
typedef struct {
unsigned short v1;
unsigned short v2;
unsigned short v3;
} myStruct;
प्रत्येक अहस्ताक्षरित लघु 2 बाइट्स लेता है। सिद्धांत रूप में, myStruct का आकार 2 * 3 = 6 बाइट्स होना चाहिए। हालाँकि, मेमोरी संरेखण वास्तविक आकार को प्रभावित कर सकता है।
इस मामले में, myStruct को 2-बाइट सीमा के साथ संरेखित किया गया है क्योंकि सबसे बड़ा डेटा सदस्य अहस्ताक्षरित छोटा है, जो 2 बाइट्स है। इसलिए, सदस्यों के बीच किसी पैडिंग की आवश्यकता नहीं है, और myStruct का आकार 6 बाइट्स रहता है। &&&]
टाइपडेफ़ संरचना { अहस्ताक्षरित लघु v1; अहस्ताक्षरित संक्षिप्त v2; अहस्ताक्षरित संक्षिप्त v3; int मैं; } myStruct;एक int सदस्य जोड़ने से संरचना का आकार और संरेखण बदल जाता है। int 4 बाइट्स है, इसलिए myStruct का संरेखण 4 बाइट्स तक पूर्णांकित किया गया है।
ठीक से संरेखित करने के लिए, v3 और i के बीच पैडिंग के 2 बाइट्स डाले गए हैं। इसके परिणामस्वरूप myStruct के लिए कुल आकार 6 2 4 = 12 बाइट्स हो जाता है।typedef struct {
unsigned short v1;
unsigned short v2;
unsigned short v3;
int i;
} myStruct;
मेमोरी संरेखण सुनिश्चित करता है कि डेटा को मेमोरी में कुशलतापूर्वक रखा गया है। संरेखण आवश्यकताएँ संरचना के भीतर सबसे बड़े डेटा सदस्य के आकार पर आधारित होती हैं। मेमोरी उपयोग को अनुकूलित करने और कोड दक्षता बनाए रखने के लिए इन सिद्धांतों को समझना आवश्यक है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3