ذاكرة 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().
جرّب بنفسك
لا يتضمّن هذا الدرس تحدّيًا برمجيًا.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1أساسيات المؤشرات
ما هو المؤشر؟الإعلان عن المؤشراتعامل العنوان (&)عامل إلغاء المرجعية (*)مؤشرات NULLمراجعة: أساسيات المؤشرات4مشروع: أداة نصوص بسيطة
نظرة عامة على المشروععد الأحرف2المؤشرات والمصفوفات
أسماء المصفوفات كمؤشراتعناصر المصفوفة - المؤشراتالعمليات الحسابية على المؤشراتمقارنة المؤشراتمراجعة: التنقل في المصفوفة باستخدام المؤشرات5المؤشرات والدوال
التمرير بالقيمةتمرير المؤشرات إلى الدوالتعديل المتغيرات عبر المؤشراتمثال كلاسيكي: التبديلتمرير المصفوفات إلى الدوالملخص: وسائط المؤشرات في الدوال8الهياكل والمؤشرات
المؤشرات إلى الهياكلعامل السهم (->)تمرير الهياكل بالقيمةتمرير مؤشرات الهياكلالتخصيص الديناميكي للهياكلمراجعة: تعديل الهياكل باستخدام المؤشرات11تحديات المراجعة النهائية
مراجعة: دمج السلاسل النصية الديناميكيمراجعة: مصفوفة من الـ Structsمراجعة: عداد تكرار الكلمات3مصفوفات الأحرف والسلاسل النصية
السلاسل النصية كمصفوفات charالمُنهي الصفري (Null Terminator)إدخال السلاسل النصية باستخدام scanfاستخدام strlen()استخدام strcpy()استخدام strcat()استخدام strcmp()مراجعة: دوال السلاسل النصية الأساسية