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

C/C++ में struct के लिए sizeof, प्रत्येक मेंबर के sizeof के योग के बराबर क्यों नहीं होता?


स्ट्रक्ट के लिए 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 बिट मशीन पर। ऐसा क्यों है? क्योंकि स्ट्रक्ट में, यह char सरणी लेता है और इसे मेमोरी में रखता है लेकिन अब यदि यह इसके बगल में int रखता है जिसका आकार 4 बाइट्स है, तो अलाइनमेंट के नियमों का उल्लंघन होता है। इसलिए b के अंत में अतिरिक्त बाइट को छोड़ दिया जाता है और c 4 बाइट बाउंड्री से शुरू होता है। इससे अतिरिक्त आकार होता है।

आप इन नियमों के बारे में https://en.wikipedia.org/wiki/Data_structure_alignment पर और पढ़ सकते हैं।


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

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

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

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

  1. - विंडोज पर C++ के लिए शीर्ष IDE

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