العربية  

books example of a normal person

If you do not find what you're looking for, you can use more accurate words.

View more

مثال لشخص عادي (Info)


هذا المثال يهدف لتوضيح كيفية حدوث تسرب بالذاكرة، ونتائجه، بدون الحاجة إلى أي معرفة بعلم البرمجة. يرجى ملاحظة أن هذا مثال توضيحي.

البريمج في هذه الحالة هو جزء من برنامج بسيط جدا مصمم للتحكم في مصعد، هذا الجزء من البرنامج ينفذ حينما يدخل أي شخص المصعد ويضغط على زر طابق معين للصعود اليه.

حين يضغط على زر:

  • احصل على بعض الذاكرة، والتي سوف تستخدم لتذكر رقم الطابق المراد الصعود اليه.
  • أحفظ رقم الطابق في الذاكرة
  • هل نحن بالفعل في الطابق المراد؟
  • إذا كنا كذلك، ليس لدينا شيء لنفعله: انتهى

إذا لم يكن كذلك:

  • انتظر حتى يغلق المصعد
  • اذهب إلى الطابق المطلوب
  • افرغ الذاكرة التي استخدمت في تذكر رقم الطابق

قد يبدو هذا البريمج بسيطا بشكل كاف، ولكنه لديه بالفعل تسرب ذاكرة، فلنعتبر أن المصعد كان في الطابق رقم 3، حين يتم الضغط على الزر 3، نحجز جزء من الذاكرة، ولا نعيده أبدا. وفي كل مرة يحدث كذلك، نسرب المزيد من الذاكرة.

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

قد تكون النتائج أيضا غير جيدة، فقد ينتهي الأمر بالمصعد إلى عدم الاستجابة لطلبات الصعود لأدوار أخرى، وإذا كان المصعد يحتاج إلى ذاكرة لفتح الباب أيضا، فقد يحبس شخصا ما بداخل المصعد، لأنه لا توجد ذاكرة كافيه ليتم فتح ذلك الباب.

لاحظ أن التسرب لا يمكن ان يستمر إلا إذا استمر البرنامج بالعمل، كمثال، إذا انقطع التيار الكهربي فجأة عن المصعد، عندها عندما يعود التيار ستكون الذاكرة فارغة تماما ومتوفرة من جديد، حينها سيكون على عملية التسرب البطيئة البدء من جديد.

Source: wikipedia.org