تخطَّ إلى المحتوى

الذاكرة اليدوية

أن تعرف من أين تأتي الذاكرة في ميم، ومتى تعيدها بنفسك.

  • كل نص تبنيه، وكل قائمة وقاموس، يأخذ مكاناً في الذاكرة من مخصص، وهو ما تُحجز منه الذاكرة وتُعاد إليه. وإن لم تذكر مخصصاً فالحجز من المخصص الافتراضي.
  • ليس في ميم منذ 0.7 عدّ مراجع ولا جامع قمامة. وما لا يُحرَّر يعود إلى النظام عند خروج البرنامج.
  • لذلك لا يحتاج البرنامج القصير إلى شيء. أما البرنامج الطويل فيعيد ما ينتهي منه:
    • حرر(س) تعيد النص أو القائمة أو القاموس فوراً، وتجعل س لاشيء.
    • خاتمه جملة تؤجّل الجملة إلى الخروج من الكتلة، فإذا كتبت خاتمه حرر(ن) في حلقة أُعيد مكان ن في آخر كل دورة.
مثال
لكل ع في مدى(0, 3):
ن = "سطر " + نص(ع)
خاتمه حرر(ن)
اطبع(ن)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
سطر 0سطر 1سطر 2

وتحرير القيمة نفسها مرتين خطأ تشغيل:

يسبب الخطأ
م = جديد(1)
حرر(م)
حرر(م)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
[خطأ تشغيل E0349] سطر 3:1 - تحرير مؤشر قيمته لاشيء (هل حُرّر من قبل؟)  حرر(م)

رمز الخروج: 3

في فهرس الأخطاء: E0349

يصلحه
م = جديد(1)
حرر(م)
اطبع(م == لاشيء)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
صواب
  • الساحة (ساحة(الاصل)) مخصص يجمع ما يُحجز منه، واعد(ساحه) تعيده كله دفعة واحدة.
  • الكاشف (كاشف(الاصل)) مخصص يبلّغ عمّا لم يُحرَّر منه.
  • في المدمجات والدوال، آخر وسيط من النوع مخصص اختياري، وما تبنيه الدالة يُحجز منه.
  • الخيار --debug-mem يجعل المخصص الافتراضي كاشفاً.

الجدول الكامل والأمثلة والقيود في مرجع الذاكرة: المخصصات وخاتمه.

كان الإصدار 0.6 يعدّ المراجع، والإصدار 0.7 لا يعدّها. التفصيل في الترحيل من 0.6 إلى 0.7، ووصف النموذج القديم في العدّ المرجعي (تاريخي).

درس الذاكرة للمبتدئ · الطبقة المنخفضة · المصطلحات