تخصيص الذاكرة ديناميكيًا
استكشفوا دوال مثل malloc وcalloc وrealloc وfree لإدارة الذاكرة ديناميكيًا
تخصيص الذاكرة ديناميكيًا درس مجاني في C Academy على CoddyKit. هذا هو الدرس 2 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C Academy 3 دروس في المجموع.
تخصيص الذاكرة الديناميكي
تخصيص الذاكرة الديناميكي
يتيح تخصيص الذاكرة الديناميكي في C تخصيص الذاكرة وقت التشغيل بدلًا من وقت الترجمة.
في هذا الدرس، ستتعلمون:
- كيفية تخصيص الذاكرة باستخدام
mallocوcallocوrealloc. - كيفية تحرير الذاكرة المخصصة باستخدام
free. - كيفية تجنب تسرّبات الذاكرة.

ما هو تخصيص الذاكرة الديناميكي؟
ما هو تخصيص الذاكرة الديناميكي؟
عادةً، تُخصَّص ذاكرة المتغيرات وقت الترجمة.
أما في تخصيص الذاكرة الديناميكي، فتُخصَّص الذاكرة أثناء تنفيذ البرنامج باستخدام دوال خاصة.
يفيد ذلك في إدارة المصفوفات أو البنى التي لا يُعرف حجمها وقت الترجمة.
تخصيص الذاكرة باستخدام malloc()
تخصيص الذاكرة باستخدام malloc()
تخصص الدالة malloc الذاكرة، لكنها لا تهيئها.
الصيغة:
ptr = (int*) malloc(size * sizeof(int));
تعيد هذه الدالة مؤشرًا إلى الذاكرة المخصصة، أو NULL إذا فشل التخصيص.
مثال: استخدام malloc()
مثال: استخدام malloc()
يوضح هذا البرنامج كيفية تخصيص الذاكرة باستخدام malloc.
#include <stdio.h>
#include <stdlib.h>
int main() {
int *ptr = (int*) malloc(5 * sizeof(int));
if (ptr == NULL) {
printf("Memory allocation failed!\n");
return 1;
}
for (int i = 0; i < 5; i++) {
ptr[i] = i * 10;
printf("%d ", ptr[i]);
}
free(ptr);
return 0;
}تخصيص الذاكرة باستخدام calloc()
تخصيص الذاكرة باستخدام calloc()
تخصص الدالة calloc الذاكرة وتُهيئها إلى الصفر.
الصيغة:
ptr = (int*) calloc(num_elements, sizeof(int));
تعيد هذه الدالة مؤشرًا إلى الذاكرة المخصصة، أو NULL إذا فشل التخصيص.
مثال: استخدام calloc()
مثال: استخدام calloc()
يوضح هذا البرنامج كيفية تخصيص الذاكرة باستخدام calloc.
#include <stdio.h>
#include <stdlib.h>
int main() {
int *ptr = (int*) calloc(5, sizeof(int));
if (ptr == NULL) {
printf("Memory allocation failed!\n");
return 1;
}
for (int i = 0; i < 5; i++) {
printf("%d ", ptr[i]); // All elements initialized to 0
}
free(ptr);
return 0;
}إعادة تخصيص الذاكرة باستخدام realloc()
إعادة تخصيص الذاكرة باستخدام realloc()
تغيّر الدالة realloc حجم الذاكرة المخصصة مسبقًا.
الصيغة:
ptr = realloc(ptr, new_size * sizeof(int));
تعيد هذه الدالة مؤشرًا إلى كتلة الذاكرة الجديدة.
تحرير الذاكرة باستخدام free()
تحرير الذاكرة باستخدام free()
ينبغي تحرير الذاكرة المخصصة باستخدام free() لتجنب تسرّبات الذاكرة.
الصيغة:
free(ptr);
بعد تحرير الذاكرة، يجب عدم الوصول إلى المؤشر.
خلاصة
خلاصة
في هذا الدرس، تعلمتم:
- كيفية تخصيص الذاكرة باستخدام
mallocوcalloc. - كيفية إعادة تخصيص الذاكرة باستخدام
realloc. - كيفية تحرير الذاكرة باستخدام
freeلمنع تسرّبات الذاكرة.
بعد ذلك، سنستكشف مصفوفات المؤشرات ومؤشرات الدوال في C!

الأسئلة الشائعة
هل درس «تخصيص الذاكرة ديناميكيًا» مجاني؟
نعم — نص درس «تخصيص الذاكرة ديناميكيًا» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C Academy 3 دروس في المجموع.
ماذا ستتعلم في «تخصيص الذاكرة ديناميكيًا»؟
استكشفوا دوال مثل malloc وcalloc وrealloc وfree لإدارة الذاكرة ديناميكيًا تتمرن على C Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ C Academy؟
لا تُشترط خبرة سابقة. C Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 3.
كم من الوقت يستغرق درس «تخصيص الذاكرة ديناميكيًا»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس C Academy هذا؟
نعم. كل درس في C Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- مقدمة إلى المؤشرات
- تخصيص الذاكرة ديناميكيًا
- مصفوفات المؤشرات ومؤشرات الدوال