alloc وfree وcreate وdestroy
عمليات المخصّص الأساسية
alloc وfree وcreate وdestroy درس مجاني في Zig Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Zig Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Zig Academy 4 دروس في المجموع.
أربع عمليات أساسية
يوفّر مخصّص الذاكرة أربع استدعاءات أساسية: alloc وfree لعناصر متعددة، وcreate وdestroy لقيمة واحدة.
تعيد alloc شريحة
استخدموا alloc لطلب مجموعة متتابعة من العناصر. مرّروا نوع العنصر وعدده، فتحصلون على شريحة تحتوي على ذلك العدد من العناصر.
const buf = try a.alloc(u8, 64);يمكن أن تفشل alloc
نظرًا إلى احتمال نفاد الذاكرة، تعيد alloc اتحاد أخطاء. وتتولى الكلمة المفتاحية try معالجة حالة OutOfMemory بطريقة واضحة.
const list = try a.alloc(i32, 10);تعيد free الذاكرة
عند الانتهاء، استدعوا free مع الشريحة نفسها التي حصلتم عليها تمامًا. وإذا نسيتم ذلك، فسيبلغكم GeneralPurposeAllocator عن تسرّب.
a.free(buf);استخدموا defer free فورًا
من العادات الشائعة كتابة defer a.free مباشرةً بعد نجاح alloc، بحيث يحدث التنظيف مهما كانت طريقة الخروج من النطاق.
const buf = try a.alloc(u8, 64);
defer a.free(buf);استخدموا create لقيمة واحدة
عندما تحتاجون إلى قيمة واحدة بالضبط على heap، استخدموا create. فهي تأخذ نوعًا وتعيد مؤشرًا إلى عنصر واحد في ذاكرة جديدة.
const node = try a.create(Node);اكتبوا عبر المؤشر
تعيد create مؤشرًا، لذا تضبطون القيمة عبره باستخدام .* قبل استخدام البيانات التي يشير إليها.
node.* = Node{ .value = 42 };حرّروا المؤشر باستخدام destroy
حرّروا القيمة المنشأة باستخدام destroy، مع تمرير المؤشر نفسه الذي أعادته create. وهذا هو الاستدعاء المقابل لـ create.
a.destroy(node);طابقوا الأزواج
القاعدة صارمة: تقترن alloc بـ free، وتقترن create بـ destroy. لا تخلطوا بينها أبدًا، ولا تحرّروا شريحة لم تخصصوها.
حرّروا باستخدام المخصّص نفسه
احرصوا دائمًا على تحرير الذاكرة باستخدام المخصّص نفسه الذي أنشأها. فخلط المخصّصات يؤدي إلى تلف لا يستطيع المصرّف اكتشافه.
تتجاوز الأخطاء جسم defer
إذا فشلت alloc نفسها، فلن تُنشأ أي ذاكرة، وبالتالي لا يوجد ما يجب تحريره. لذلك يأتي defer free بعد نجاح alloc. ✅
تحقق سريع
طابقوا كل استدعاء تخصيص باستدعاء التحرير الصحيح.
مراجعة
تعلّمتم الأزواج: alloc/free للشرائح، وcreate/destroy للقيم المفردة، مع تحريرها دائمًا باستخدام المخصّص نفسه. 🎯
الأسئلة الشائعة
هل درس «alloc وfree وcreate وdestroy» مجاني؟
نعم — نص درس «alloc وfree وcreate وdestroy» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Zig Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Zig Academy 4 دروس في المجموع.
ماذا ستتعلم في «alloc وfree وcreate وdestroy»؟
عمليات المخصّص الأساسية تتمرن على Zig Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Zig Academy؟
لا تُشترط خبرة سابقة. Zig Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «alloc وfree وcreate وdestroy»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Zig Academy هذا؟
نعم. كل درس في Zig Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- لماذا لا يحتوي Zig على تخصيصات خفية
- واجهة المخصّص
- alloc وfree وcreate وdestroy
- القوائم الديناميكية باستخدام ArrayList