مخصّص الاختبار يكتشف التسريبات
اكتشفوا أخطاء الذاكرة تلقائياً
مخصّص الاختبار يكتشف التسريبات درس مجاني في Zig Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Zig Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Zig Academy 4 دروس في المجموع.
أخطاء الذاكرة خادعة
قد تنجح شيفرة ما في جميع فحوص القيم، ومع ذلك تسرّب الذاكرة بسبب نسيان تحريرها. توفر Zig أداة للاختبارات لاكتشاف ذلك تحديدًا.
تعرّف إلى testing.allocator
تحصل داخل الاختبار على مخصّص خاص في std.testing.allocator. استخدمه في أي موضع تحتاج فيه شيفرتك إلى تخصيص ذاكرة على الكومة.
const a = std.testing.allocator;يتتبع كل عملية تخصيص
يتذكر testing.allocator كل كتلة يمنحها. وعند انتهاء الاختبار، يتحقق من إعادة كل كتلة إليه.
يؤدي التسريب إلى فشل الاختبار
إذا لم تُحرَّر عملية تخصيص واحدة، يُبلغ testing.allocator عن تسريب ويفشل الاختبار، مع توجيهك إلى موضع التحرير المفقود.
خصّص الذاكرة في اختبار
اطلب الذاكرة من المخصّص كما تفعل في الشيفرة الفعلية. هنا تحجز alloc مخزنًا مؤقتًا من عشرة بايتات يجب تحريره لاحقًا.
const buf = try a.alloc(u8, 10);حرّر الذاكرة باستخدام defer
زاوج كل عملية تخصيص مع defer يحررها. تُجدول عملية التنظيف فورًا، ولذلك تُنفّذ حتى إذا فشل الاختبار في منتصفه.
const buf = try a.alloc(u8, 10);
defer a.free(buf);انسَ free لاكتشاف الخطأ
احذف ذلك defer، وسيفشل الاختبار مع تقرير عن التسريب. هكذا يحوّل allocator خطأً صامتًا إلى فشل واضح يمكن إصلاحه.
يكتشف أيضًا التحرير المزدوج
يكتشف allocator نفسه، مع التحقق المضمّن فيه، تحرير الكتلة نفسها مرتين أو تحرير ذاكرة لم يمنحك إياها، وهما من أسباب الانهيارات الشائعة.
مرّره إلى شيفرتك
تستقبل الدوال التي تخصّص الذاكرة وسيطة مخصّص. وفي الاختبار، مرّر إليها testing.allocator حتى تُتتبّع ذاكرتها أيضًا.
const list = try buildList(std.testing.allocator);نظّف ما تنشئه
يجب على الاختبار تحرير كل ما خصصته دالتك. أضف defer مباشرةً بعد الاستدعاء لتحرير البيانات المعادة أو إلغاء تهيئتها.
defer list.deinit();اختبار تحرير الذاكرة
بما أن التسريبات تؤدي إلى فشل البناء، يثبت كل اختبار ناجح أن ذاكرته حُررت بالكامل. وهذه الثقة مميزة لـ testing.allocator.
فحص سريع
تشغّل اختبارًا يخصّص الذاكرة باستخدام std.testing.allocator لكنه لا يحرر المخزن المؤقت أبدًا. ماذا يحدث؟
مراجعة
استخدمت std.testing.allocator لاكتشاف التسريبات والتحرير المزدوج مجانًا. زاوج كل alloc مع defer free، وستظل اختباراتك نظيفة. ✅
تعلم Zig مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 30
- الدروس
- 120
الأسئلة الشائعة
هل درس «مخصّص الاختبار يكتشف التسريبات» مجاني؟
نعم — نص درس «مخصّص الاختبار يكتشف التسريبات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Zig Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Zig Academy 4 دروس في المجموع.
ماذا ستتعلم في «مخصّص الاختبار يكتشف التسريبات»؟
اكتشفوا أخطاء الذاكرة تلقائياً تتمرن على Zig Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Zig Academy؟
لا تُشترط خبرة سابقة. Zig Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «مخصّص الاختبار يكتشف التسريبات»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Zig Academy هذا؟
نعم. كل درس في Zig Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- كتابة كتل test
- التوكيدات باستخدام std.testing
- مخصّص الاختبار يكتشف التسريبات
- تشغيل الاختبارات وتصفيتها