Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

ذاكرة Stack مقابل Heap

جزء من قسم Logic & Flow في رحلة C على Coddy — الدرس 31 من 63.

عندما يتم تشغيل برنامج C الخاص بك، فإنه يستخدم منطقتين متميزتين من الذاكرة: المكدس (stack) والكومة (heap). إن فهم الفرق بين منطقتي الذاكرة هاتين أمر بالغ الأهمية لبرمجة C الفعالة، خاصة عند العمل مع المؤشرات وتخصيص الذاكرة الديناميكي.

يُستخدم **المكدس (stack)** لتخصيص الذاكرة الثابت. هذا هو المكان الذي يتم فيه تخزين متغيراتك المحلية، ومعلمات الدوال، ومعلومات استدعاء الدوال. تتم إدارة المكدس تلقائيًا بواسطة النظام - فعندما تعلن عن متغير محلي، يتم تخصيص ذاكرة في المكدس، وعندما يخرج المتغير عن النطاق، يتم تحرير تلك الذاكرة تلقائيًا.

void function() {
    int x = 10;  // يتم تخصيصه في المكدس (stack)
    char arr[100];  // يتم تخصيصه أيضاً في المكدس (stack)
    // يتم تحرير الذاكرة تلقائياً عند انتهاء الدالة
}

تُستخدم الـ heap لتخصيص الذاكرة الديناميكي. هذا تجمع أكبر من الذاكرة يمكنك طلبه أثناء تنفيذ البرنامج.

على عكس المكدس (stack)، تتطلب الكومة (heap) إدارة يدوية - يجب عليك طلب الذاكرة صراحةً ثم تحريرها لاحقاً عند الانتهاء منها. يمنحك هذا تحكماً أكبر ولكن أيضاً مسؤولية أكبر.

الفرق الجوهري يكمن في الإدارة: ذاكرة المكدس (stack memory) تلقائية ومحدودة الحجم، بينما ذاكرة الكومة (heap memory) يدوية وأكبر بكثير. في الدروس القادمة، ستتعلم كيفية التعامل مع ذاكرة الكومة باستخدام دوال مثل malloc() و free().

ورقة مرجعية

تستخدم برامج C منطقتين متميزتين من الذاكرة:

المكدس (Stack): يُستخدم لتخصيص الذاكرة الثابت. يقوم بتخزين المتغيرات المحلية، ومعاملات الدوال، ومعلومات استدعاء الدوال. تتم إدارة الذاكرة تلقائيًا - حيث يتم تخصيصها عند التصريح عن المتغيرات وتحريرها عندما تخرج عن نطاق العمل (scope).

void function() {
    int x = 10;  // تم تخصيصها في المكدس (stack)
    char arr[100];  // تم تخصيصها أيضًا في المكدس (stack)
    // يتم تحرير الذاكرة تلقائيًا عند انتهاء الدالة
}

الكومة (Heap): تُستخدم لتخصيص الذاكرة الديناميكي. وهي عبارة عن تجمع أكبر من الذاكرة يتطلب إدارة يدوية - يجب عليك طلب الذاكرة وتحريرها صراحةً باستخدام دوال مثل malloc() و free().

الفرق الرئيسي: ذاكرة المكدس (Stack) تلقائية ومحدودة الحجم، بينما ذاكرة الكومة (Heap) يدوية وأكبر بكثير.

جرّب بنفسك

لا يتضمّن هذا الدرس تحدّيًا برمجيًا.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Logic & Flow