إن فهم كيفية تخزين البيانات في الذاكرة أمر أساسي للبرمجة الفعالة في جيم وجيم ++. فالهيكلات والنقابات هي أنواع بيانات أساسية تؤثر على تصميم الذاكرة وحجمها.() وتوضح هذه المادة كيفية تخصيص الذاكرة لهذه الأنواع من البيانات وكيفية حساب أحجامها بدقة.

Memory Layout of Structures

والهيكلان في كل من جيم وجيم ++ هما مجموعة من المتغيرات، وربما من أنواع مختلفة، تجمع معا تحت اسم واحد، ويخصص المجمّع ذاكرة لهيكل من خلال وضع كل عضو في تسلسله، مع احتمال تمهيده لتلبية متطلبات المواءمة.

الحجم الكلي للهيكل هو مجموع أحجام أعضائها بالإضافة إلى أي رصيف مضاف للمواءمة، يضمن الإبطاء أن يبدأ كل عضو في عنوان مقسم حسب حجمه أو متطلبه للمواءمة.

Memory Layout of Unions

وتشبه النقابات الهياكل، ولكنها تختلف في تخصيص الذاكرة، ويتقاسم جميع أعضاء الاتحاد نفس حيز الذاكرة، الذي يعادل حجم أكبر عضو فيه، ويتيح هذا المجال لتعدد أنواع البيانات أن تشغل نفس موقع الذاكرة.

ويحدد أكبر عضو في الاتحاد حجم الاتحاد، بالإضافة إلى إمكانية منحه للمواءمة، ويؤثر الكتابة على أحد الأعضاء في بيانات الأعضاء الآخرين، ولذلك تستخدم النقابات لتقاسم البيانات بكفاءة الذاكرة.

مقياس البيانات المحسوب

ويشمل حساب حجم الهياكل والنقابات تلخيص أحجام فرادى الأعضاء والنظر في الرعي للمواءمة.() ويوفر عامل في C وC+ الحجم الإجمالي في البوابات.

For example, consider a structure with an and a ]. The size of the structure depends on the size of ], the size of , and the padding added for alignment. Similarly, the size of a union is the size of its largest member.

  • Use ]sizeof] to determine total size.
  • النظر في متطلبات المواءمة لكل عضو.
  • حساب الرعي الذي أضافه المجمّع
  • تذكروا أن الاتحادات تشارك جميع الأعضاء في الذاكرة.