السلام عليكم ,,
الحقيقة أحياناً يحتار الشخص الذي يبرمج في ++C, المفروض أن هذه اللغة هي لغة عالية المستوى, و لكنها تبقى دائماً في منتصف الطريق بين اللغات العالية و اللغات المنخفضة المستوى,
لربما كان الكلام السابق نظرياً, و لكنه يظهر في العديد من الأماكن.
سوف أقوم بطرح مثال و سأنتظر الإجابة من أي شخص يريد المشاركة :
تصور أنك تريد كتابة التالي في ++C :
struct Record{
char x;
int y;
};طبعاً حجم الـ Struct هو مجموع حجم المتغيرات فيه, هذا يعني أن الـ Record في الأعلى حجمه هو حجم المتغير char زائداً حجم المتغير int و هذا يعني 4 + 1 و التي تساوي 5 bytes ...
إلى هنا كل شيء لا غبار عليه,,
قم بتعريف نسخة من الـ Record :
Record R;
و الآن قم باستخدام sizeof للحصول على حجم الـ Record بالـ Bytes :
cout << sizeof(R);
جرب الكود و ستكتشف أنه بدلاً من طباعة الحجم الأصلي 5 bytes, سيظهر لك على الشاشة أن حجم الـ Record يساوي 8 bytes !!!!
من أين جاءت الـ 3 bytes هذه ؟؟؟
هذا ما أنتظر إجابته منكم ...
تحياتي ,,



