आकार () द्वारा लिए गए संरचना प्रकार तत्व का आकार हमेशा प्रत्येक व्यक्तिगत सदस्य के आकार के बराबर नहीं होता है। संरेखण मुद्दों से बचने के लिए कभी-कभी संकलक कुछ पैडिंग जोड़ते हैं। तो आकार बदल सकता है। पैडिंग तब जोड़ी जाती है जब एक संरचना सदस्य के बाद एक बड़ा आकार वाला सदस्य या संरचना के अंत में होता है। विभिन्न कंपाइलर में विभिन्न प्रकार की संरेखण बाधाएं होती हैं। सी मानक में, कुल संरेखण संरचना कार्यान्वयन पर निर्भर करती है।
केस 1
इस मामले में डबल z 8-बाइट लंबा है, जो x (4-बाइट) से बड़ा है। तो एक और 4-बाइट पैडिंग जोड़ा जाता है। साथ ही शॉर्ट टाइप डेटा y में मेमोरी में 2-बाइट स्पेस होता है इसलिए अतिरिक्त 6-बाइट्स को पैडिंग के रूप में जोड़ा जाता है।
उदाहरण कोड
#include <stdio.h> struct myStruct { int x; //Integer takes 4 bytes, and padding 4 bytes double z; //Size of double is 8-byte, no padding short int y; //Size of short is 2-byte, padding 6-bytes }; main() { printf("Size of struct: %d", sizeof(struct myStruct)); }
आउटपुट 2
Size of struct: 24
केस 2
इस मामले में पहले डबल डाला जाता है, और इसमें 8-बाइट स्पेस लगता है। अब पूर्णांक x (4-बाइट) जोड़ा गया है। तो एक और 4-बाइट स्पेस है। जब छोटा y जोड़ा जाता है, तो उसे उस अतिरिक्त 4-बाइट स्थान में रखा जा सकता है और कुल 16-बाइट स्थान घेरता है।
उदाहरण कोड
#include <stdio.h> struct myStruct { double z; //Size of double is 8-byte, no padding int x; //Integer takes 4 bytes, and padding 4 bytes short int y; //Size of short is 2-byte, padding 6-bytes }; main() { printf("Size of struct: %d", sizeof(struct myStruct)); }
आउटपुट 2
Size of struct: 16
केस 3
तीसरे मामले में यह 16-बाइट मेमोरी स्पेस भी लेता है, लेकिन व्यवस्था अलग है। चूंकि पहला सदस्य डबल होता है तो उसे पहले रखा जाता है, फिर शॉर्ट टाइप डेटा जोड़ा जाता है। अब जब पूर्णांक डालने का प्रयास कर रहा है, तो इसे शेष 6-बाइट क्षेत्र में रखा जा सकता है। तो एक पैडिंग शॉर्ट के बाद मौजूद है लेकिन पूर्णांक डेटा के बाद किसी पैडिंग की आवश्यकता नहीं है।
उदाहरण कोड
#include <stdio.h> struct myStruct { double z; //Size of double is 8-byte, no padding short int y; //Size of short is 2-byte, padding 6-bytes int x; //Integer takes 4 bytes, and padding 4 bytes }; main() { printf("Size of struct: %d", sizeof(struct myStruct)); }
आउटपुट 2
Size of struct: 16