C Academy · درس

أخطاء وقت التشغيل الشائعة

حدّدوا أخطاء انتهاك التجزئة وتجاوز سعة المخزن المؤقت وتسربات الذاكرة وتجنبوا حدوثها

الدرس 2 من 310 خطوة

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

أخطاء وقت التشغيل الشائعة في C

تحدث أخطاء وقت التشغيل عندما يواجه البرنامج سلوكًا غير متوقّع، وغالبًا ما تؤدي إلى تعطّله.

في هذا الدرس، ستتعلّم:

  • كيفية حدوث أخطاء تجزئة الذاكرة وكيفية إصلاحها.
  • كيف تؤدي تجاوزات سعة المخزن المؤقت إلى ثغرات أمنية.
  • كيف تؤثر تسريبات الذاكرة في الأداء وكيفية تجنّبها.
أخطاء وقت التشغيل الشائعة — رسم توضيحي 1

ما هو خطأ تجزئة الذاكرة؟

يحدث خطأ تجزئة الذاكرة عندما يحاول البرنامج الوصول إلى ذاكرة غير مسموح له بالوصول إليها.

الأسباب:

  • إلغاء الإشارة إلى مؤشر غير مهيّأ أو مؤشر NULL.
  • الوصول إلى ذاكرة تتجاوز حدود المصفوفة.
  • تعديل ذاكرة للقراءة فقط.

مثال: خطأ تجزئة الذاكرة

يتسبب هذا البرنامج في خطأ تجزئة الذاكرة من خلال إلغاء الإشارة إلى مؤشر NULL.

#include <stdio.h>

int main() {
    int *ptr = NULL;
    printf("%d\n", *ptr); // Segmentation fault
    return 0;
}

منع أخطاء تجزئة الذاكرة

نصائح لتجنّب أخطاء تجزئة الذاكرة:

  • هيّئ المؤشرات دائمًا قبل استخدامها.
  • تحقّق مما إذا كان المؤشر NULL قبل إلغاء الإشارة إليه.
  • استخدم التحقق من حدود المصفوفات.

ما هو تجاوز سعة المخزن المؤقت؟

يحدث تجاوز سعة المخزن المؤقت عندما تتجاوز البيانات مساحة الذاكرة المخصّصة.

مثال:

char arr[5]; gets(arr);

قد يؤدي ذلك إلى سلوك غير متوقّع وثغرات أمنية.

مثال: تجاوز سعة المخزن المؤقت

يوضّح هذا البرنامج تجاوز سعة المخزن المؤقت باستخدام gets().

#include <stdio.h>

int main() {
    char buffer[5];
    printf("Enter a string: ");
    gets(buffer); // Unsafe, may cause buffer overflow
    printf("You entered: %s\n", buffer);
    return 0;
}

منع تجاوزات سعة المخزن المؤقت

لمنع تجاوزات سعة المخزن المؤقت:

  • استخدم fgets() بدلًا من gets().
  • تحقّق من أحجام المدخلات قبل الكتابة إلى المصفوفات.
  • استخدم دوال آمنة من ناحية الذاكرة مثل snprintf().

تسريبات الذاكرة

يحدث تسرّب الذاكرة عندما لا تُحرَّر الذاكرة المخصّصة، مما يؤدي إلى هدر الذاكرة.

الأسباب:

  • نسيان استخدام free() بعد malloc().
  • الكتابة فوق مؤشر دون تحرير التخصيص القديم.

الملخص

في هذا الدرس، تعلّمت:

  • كيفية حدوث أخطاء تجزئة الذاكرة وكيفية منعها.
  • كيف تؤدي تجاوزات سعة المخزن المؤقت إلى مشكلات أمنية.
  • كيف تهدر تسريبات الذاكرة موارد النظام.

بعد ذلك، سنستكشف استراتيجيات معالجة الاستثناءات في C!

أخطاء وقت التشغيل الشائعة — رسم توضيحي 10
البدء مجانًا

تعلم C مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
39
الدروس
144

الأسئلة الشائعة

هل درس «أخطاء وقت التشغيل الشائعة» مجاني؟

نعم — نص درس «أخطاء وقت التشغيل الشائعة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C Academy 3 دروس في المجموع.

ماذا ستتعلم في «أخطاء وقت التشغيل الشائعة»؟

حدّدوا أخطاء انتهاك التجزئة وتجاوز سعة المخزن المؤقت وتسربات الذاكرة وتجنبوا حدوثها تتمرن على C Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ C Academy؟

لا تُشترط خبرة سابقة. C Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 3.

كم من الوقت يستغرق درس «أخطاء وقت التشغيل الشائعة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس C Academy هذا؟

نعم. كل درس في C Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. تصحيح الأخطاء باستخدام GDB
  2. أخطاء وقت التشغيل الشائعة
  3. معالجة الاستثناءات في C
← العودة إلى C Academy