مبدئيا:
1. نوع فئة C++ هو نوع قيمة، مما يعني أنه عند إنشاء مثيل لكائن فئة، يتم تخصيص الذاكرة على المكدس.
بهذه الطريقة، إذا تم تعريف نوع الفصل على هذا النحو
فئة أ
{
عام:
كثافة العمليات أنا؛
أ أ؛
}
سوف يقع في حلقة لا نهائية، لأنه عند إنشاء كائن من A، يحتاج A إلى حساب مساحة الذاكرة التي يشغلها مثل هذا الكائن بناءً على نوع العضو (يتم تحديد أعضاء البيانات بناءً على النوع ورمز العضو يتم تخزين الوظيفة في ملف exe لتعيين الذاكرة، ما عليك سوى استخدام المؤشر للإشارة إلى عنوان الذاكرة وإضافة بعض معلومات وصف الفئة، لكن sizeof لا يعرض استخدام الذاكرة لهذا الجزء من معلومات الوصف عند مواجهة كائن a من نوعه الخاص، فهو يحسب البيانات المستخدمة بواسطة مساحة الذاكرة، وa من النوع A، لذا كرر.
لذلك في C ++
يمكن أن تحتوي على مؤشرات من نوعها (غالبًا ما تستخدم في القوائم المرتبطة)
فئة أ
{
عام:
كثافة العمليات أنا؛
أ * سنويا؛
}
من السهل تحديد مساحة الذاكرة التي يشغلها متغير المؤشر. يشير عدد كلمات الآلة في الطول إلى مقدار المساحة التي يشغلها متغير المؤشر.
2. نوع الفئة في C# هو نوع مرجعي، وهو في الأساس مؤشر.
لذلك، فإن كافة كائنات الفئة في C# نفسها هي 4 بايت (جهاز 32 بت) وتحتوي على عنوان ذاكرة يشير إلى مساحة ذاكرة الكومة.
فئة أ
{
كثافة العمليات العامة أنا؛
العامة أ؛
}
كائن = جديد أ ()؛
يحتل الكائن نفسه 4 بايت من الذاكرة ويخزن عنوان ذاكرة الكومة. حجم هذه الذاكرة هو 8 بايت (4 بايت، a هو أيضًا أربعة بايت). يخزن عنوانًا آخر في ذاكرة الكومة، مشيرًا إلى مساحة ذاكرة 8 بايت.
نظرًا لأنه يمكننا تحديد مقدار مساحة الذاكرة التي يشغلها كائن من النوع A (4 بايت، جميع كائنات فئة C# تشغل 4 بايت، في جهاز 32 بت)، يمكننا تحديد
-