انتقل إلى المحتوى
الوحدة 3

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

نموذج ملكية Master C++ - بدءًا من المؤشرات الأولية وحتى المؤشرات الذكية وتحريك الدلالات - لكتابة تعليمات برمجية لا تتسرب أبدًا.

المؤشرات والمراجع

  1. المؤشرات: العناوين وإلغاء الإشارة والحساب

    فهم المؤشرات كعناوين للذاكرة، وتعلم عوامل العنوان وإلغاء الإشارة، وحساب المؤشر داخل المصفوفات، وصحة الثبات مع المؤشرات، ومتى تظل المؤشرات الأولية مناسبة في C++ الحديثة.

  2. المراجع: Lvalue، Rvalue والمزالق

    استكشف مراجع lvalue وrvalue، وافهم فئات قيم C++، وتعلم قواعد طي المراجع وإعادة توجيه المراجع، وتجنب الأخطاء المرجعية المتدلية.

  3. الذاكرة الديناميكية: الجديدة والحذف ومخاطرها

    تعرف على كيفية عمل التخصيص الديناميكي مع الجديد والحذف، وافهم مخاطر تسرب الذاكرة، والاستخدام المزدوج، والاستخدام بعد الاستخدام مجانًا، واكتشف لماذا يجب أن يحتوي C++ الحديث على صفر جديد/حذف أولي.

المؤشرات الذكية

  1. std::unique_ptr: ملكية حصرية

    تعرف على كيفية توفير std::unique_ptr للملكية الحصرية بدون أي حمل، وكيفية استخدام make_unique، وأدوات الحذف المخصصة لموارد C، وأنماط وظائف المصنع.

  2. shared_ptr, weak_ptr & Ownership Graphs

    افهم الملكية المشتركة المُعدة حسب المرجع باستخدام Shared_ptr، وقم بفصل الدورات باستخدام Weak_ptr، وتعرف على كتل التحكم والاسم المستعار، واعرف متى يكون Shared_ptr هو الاختيار الخاطئ.

نقل الدلالات وRAII

  1. Move Semantics & std::move

    Understand the problem move semantics solves, how std::move is a cast (not a move), implement move constructors and move assignment, and learn why noexcept is critical for container performance.

  2. إعادة توجيه مثالية و std::forward

    افهم سبب اعتبار مراجع rvalue المُسماة قيمًا، وتعرف على نمط إعادة التوجيه الأساسي باستخدام std::forward، وانظر كيف يستخدم emplace_back إعادة التوجيه المتغير لإنشاء كائنات في مكانها.

  3. RAII: نمط الموارد الأساسية

    تعرف على RAII (الحصول على الموارد هو التهيئة) - نمط C++ الأساسي لإدارة الموارد الآمنة للاستثناء. قم بتطبيق أغلفة RAII، وفهم lock_guard وscoped_lock، وتعرف على سبب ضرورة نقل أنواع RAII فقط أو إحصاء المرجع.

الذاكرة المتقدمة

  1. تخطيط الذاكرة والمحاذاة وتمثيل الكائنات

    فهم متطلبات حشو البنية والمحاذاة، وتحسين ترتيب الأعضاء من حيث الحجم، والتعرف على خطوط ذاكرة التخزين المؤقت والمشاركة الخاطئة، واستخدام ميزات C++20 مثل [[no_unique_address]] للتخطيطات المضغوطة.