Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

सी/सी++ में प्रत्येक सदस्य के आकार के योग के बराबर संरचना के लिए आकार क्यों नहीं है?


किसी संरचना के लिए sizeof और उस संरचना के प्रत्येक सदस्य के sizeof के योग के बीच का अंतर बाइट पैडिंग और संरेखण के कारण होता है। C/C++ में प्रत्येक डेटा प्रकार की संरेखण आवश्यकता होती है। एक प्रोसेसर में इसकी वास्तुकला की शब्द लंबाई प्रसंस्करण होगी। 32 बिट मशीन पर, प्रोसेसिंग शब्द का आकार 4 बाइट्स या 32 बिट होगा। उदाहरण के लिए, यदि आपके पास संरचना है -

उदाहरण

#include <iostream>
using namespace std;
struct X
{
   char b[3];
   int c;
};
int main()
{
   char b[3];
   int c;
   int total = sizeof(b) + sizeof(c);
   cout << sizeof(X) << endl;
   cout << total;
}

आउटपुट

यह आउटपुट देता है -

8
7

मेरी 64 बिट मशीन पर। ऐसा क्यों है? इसकी वजह यह है कि संरचना में, यह चार सरणी लेता है और इसे स्मृति में रखता है लेकिन अब अगर यह int रखता है जिसका आकार इसके आगे 4 बाइट्स है, तो संरेखण के नियमों का उल्लंघन किया जाता है। तो बी के अंत में अतिरिक्त बाइट छोड़ दिया जाता है और सी 4 बाइट सीमा से शुरू होता है। यह अतिरिक्त आकार का कारण बनता है।

आप इन नियमों के बारे में https://en.wikipedia.org/wiki/ . पर अधिक पढ़ सकते हैं डेटा_स्ट्रक्चर_संरेखण.


  1. एन-वें फाइबोनैचि संख्या के लिए सी/सी++ प्रोग्राम?

    फाइबोनैचि अनुक्रम एक श्रृंखला है जहां अगला पद पिछले दो पदों का योग है। फाइबोनैचि अनुक्रम के पहले दो पद 0 और उसके बाद 1 है। इस समस्या में, हम फाइबोनैचि श्रृंखला में nवां नंबर पाएंगे। इसके लिए हम सभी संख्याओं की गणना करेंगे और n पदों को प्रिंट करेंगे। Input:8 Output:0 1 1 2 3 5 8 13 स्पष्टीकरण 0+1=1

  1. त्रिकोणीय माचिस की तीली संख्या के लिए C/C++ प्रोग्राम?

    एक त्रिभुज जो माचिस की तीलियों का उपयोग करके बनाया जाता है, एक समबाहु त्रिभुज बनाने की व्यवस्था करता है, इसे त्रिभुजाकार माचिस की संख्या कहा जाता है। त्रिकोणीय माचिस की तीलियों की संख्या माचिस की तीलियों को त्रिभुज बनाने के लिए आवश्यक है। इस समस्या में, हमारे पास संख्या एक माचिस की तीली का तल है, X

  1. विंडो पर c++ के लिए शीर्ष IDE क्या है?

    केवल टेक्स्ट एडिटर्स पर बड़े प्रोजेक्ट्स को मैनेज करना मुश्किल है। यदि आप ऐसे मामलों में आईडीई का उपयोग करते हैं तो आप अधिक उत्पादक और कम निराश होने की संभावना रखते हैं। विभिन्न प्रकार के आईडीई हैं और आपको अपनी आवश्यकताओं के अनुरूप सही का चयन करना चाहिए। यहां विंडो के लिए सर्वश्रेष्ठ C/C++ IDE की सू