सीपीयू को अक्सर आवश्यकता होती है (या अधिक कुशलता से काम करें) कुछ प्रकार के डेटा पते पर संग्रहीत किए जाते हैं जो कुछ (शक्ति-दो-दो) मान के बहु होते हैं। इस मान को डेटा के संरेखण कहा जाता है। उदाहरण के लिए, एक सीपीयू की आवश्यकता हो सकती है कि चार-बाइट पूर्णांक उन पते पर संग्रहीत किए जाते हैं जो चार में से एक हैं (कि उनके पास चार-बाइट संरेखण है, या चार बाइट पर गठबंधन हैं)।
द्वारा सबसे अधिक प्रतिबंधक प्रकार, उनका मतलब है कि इस क्षेत्र में सबसे अधिक प्रतिबंधक आवश्यकताएं हैं। तो अगर उदा। long double
को कुछ मशीन पर आठ-बाइट संरेखण की आवश्यकता है, और किसी अन्य प्रकार की तुलना में अधिक संरेखण की आवश्यकता नहीं है, तो उस मशीन पर सबसे प्रतिबंधित प्रकार long double
होगा।
यहके लिए सबसे अधिक प्रतिबंधक प्रकार की संरेखण आवश्यकताओं को पूरा करने वाले पते को वापस करने के लिए समझ में आता है, क्योंकि इसका मतलब है कि लौटाई गई स्मृति किसी भी प्रकार को स्टोर करने के लिए उपयोग की जा सकती है। malloc()
नहीं जानता कि स्मृति का उपयोग कैसे किया जाएगा, इसलिए यह अनुकूलित नहीं हो सकता है।
यह आवश्यक नहीं है कि बड़े डेटा प्रकारों को अधिक संरेखण की आवश्यकता हो, हालांकि संरेखण आवश्यकताओं में बढ़ते आकार के साथ वृद्धि होती है।
(कुछ डेटा के प्रकार और भी अधिक संरेखण से malloc()
प्रदान करता है। उदाहरण के लिए, कई x86 SSE निर्देश डेटा वैक्टर कि 16 बाइट्स पर गठबंधन कर रहे हैं का उपयोग करें, जबकि उदाहरण के लिए glibc में malloc()
केवल गारंटी देता आठ-बाइट संरेखण पड़ सकता है। posix_memalign(3)
कर सकते हैं POSIX (* निक्स) सिस्टम पर भी अधिक संरेखण आवश्यकताओं के साथ स्मृति को गतिशील रूप से आवंटित करने के लिए उपयोग किया जा सकता है।)
सभी प्रकार के संघ को परिभाषित करता है और सबसे प्रतिबंधित प्रकार – BsD
@BsD - जो आपको सबसे बड़ा प्रकार देता है, संघ के आकार को देखता है। यह सबसे अधिक प्रतिबंधक हो सकता है या नहीं भी हो सकता है। –