একটি স্ট্রাকটের সাইজফ এবং সেই স্ট্রাকটের প্রতিটি সদস্যের সাইজফের যোগফলের মধ্যে পার্থক্য বাইট প্যাডিং এবং সারিবদ্ধকরণের কারণে। C/C++-এ প্রতিটি ডেটা টাইপের একটি সারিবদ্ধকরণের প্রয়োজনীয়তা রয়েছে। একটি প্রসেসর এর আর্কিটেকচারের প্রসেসিং শব্দের দৈর্ঘ্য থাকবে। একটি 32 বিট মেশিনে, প্রক্রিয়াকরণ শব্দের আকার হবে 4 বাইট বা 32 বিট। উদাহরণস্বরূপ, যদি আপনার struct-
থাকেউদাহরণ
#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 বাইট, সারিবদ্ধকরণের নিয়মগুলি ভঙ্গ হয়। তাই b এর শেষে অতিরিক্ত বাইটটি এড়িয়ে যায় এবং c 4 বাইট সীমানা থেকে শুরু হয়। এটি অতিরিক্ত আকারের কারণ।
আপনি https://en.wikipedia.org/wiki/-এ এই নিয়মগুলি সম্পর্কে আরও পড়তে পারেন ডেটা_স্ট্রাকচার_এলাইনমেন্ট।