الذاكرة: المخصصات وخاتمه
منقول من الكتاب المرجعي: docs/handbook/language/08-memory.md · الإيداع 7a52f6c
القاعدة (منذ 0.7.0). لا عدّ مراجع ولا جامع قمامة. كل نص يُبنى وكل قائمة وقاموس يُحجز من مخصص: الافتراضي إن لم
يُذكر غيره. ما لا يُحرَّر يعود للنظام عند خروج البرنامج. التفصيل في memory.md (وثيقة في مستودع المجمّع)
وallocators.md (وثيقة في مستودع المجمّع).
| الأداة | ما تفعله |
|---|---|
حرر(س[, م]) |
يعيد نصاً أو قائمة أو قاموساً أو خانة أو شريحة الآن، ويجعل س لاشيء. لا يتبع ما في الحاوية |
خاتمه جملة |
يؤجّل الجملة إلى الخروج من الكتلة (ومنه ارجع وتوقف وتجاوز)، بعكس الترتيب |
ساحة(الاصل) |
مخصص يجمع ما يُحجز منه، واعد(ساحه) تعيده كله |
كاشف(الاصل) |
مخصص يبلّغ عمّا لم يُحرَّر منه عند اعد أو النهاية |
مخزن_ثابت(شريحة) |
مخصص فوق ذاكرة ثابتة؛ امتلاؤه خطأ تشغيل |
قائمة_من([...], م) ونسخ(س, م) |
تبني الحاوية في مخصص |
آخر وسيط مخصص في المدمجات والدوال |
اختياري: ما تبنيه يُحجز منه |
| الكاشف | افتراضي في التشغيل المباشر (0.10.0؛ --release يلغيه، وbuild --debug يبنيه): التحرير المزدوج والاستعمال بعد التحرير أخطاء تشغيل؛ و--debug-mem يضيف التقرير عند النهاية |
بلا_افتراضي (ترويسة) و--no-default-allocator |
كل حجز يذكر مخصصه صراحة |
مجموع = 0لكل دورة في مدى(0, 3): ساحه = ساحة(الافتراضي) خاتمه اعد(ساحه) كلمات = تقسيم(دمج_نصوص("ا ب ج ", دورة, ساحه), " ", ساحه) مجموع += طول(كلمات)ن = "مرحبا " + نص(1)خاتمه حرر(ن)اطبع(مجموع, " ", ن)القيود المعروفة. النص المؤقت في حلقة طويلة يبقى حتى الخروج إن لم يُحرَّر (ذروة الذاكرة؛ القياس في
v1-readiness.md (وثيقة في مستودع المجمّع)). الاستعمال بعد التحرير عبر اسم آخر، وبعد اعد لساحته، يكشفه الكاشف
(افتراضي في التشغيل المباشر منذ 0.10.0)؛ وفي الملف المبني بلا كاشف سلوك غير معرَّف. ما تضمنه اللغة وما لا تضمنه في
memory-safety.md (وثيقة في مستودع المجمّع).
أخطاء محتملة.
م = جديد(1)حرر(م)حرر(م)رمز الخروج: 3
في فهرس الأخطاء: E0349