Avatar ·

ما هي المؤشرات الذكية (smart pointers) ومتى يجب استخدامها؟

مرحبًا أيها الزملاء! لقد بدأت البرمجة بلغة C++ منذ فترة ليست طويلة، لكنني واجهت بالفعل مشكلة تسرب الذاكرة. ما زلت أستخدم المؤشرات العادية (raw pointers) مع `new` و `delete`، لكنني أنسى باستمرار استدعاء `delete`، خاصةً عندما يصبح الكود مليئًا بالاستثناءات والإرجاعات المبكرة. على سبيل المثال: ```cpp void process() { Resource* res = new Resource(); // ... بعض الكود الذي قد يلقي استثناءً ... delete res; // إذا كان هناك استثناء، لن نصل إلى هنا — تسرب! } ``` لقد سمعت عن "المؤشرات الذكية" (smart pointers) في C++11، لكنني لا أفهم تمامًا ما هي. هناك الكثير من المعلومات على الإنترنت، لكنني أريد شرحًا واضحًا: ما هي هذه الكائنات، وكيف تختلف عن المؤشرات العادية، وفي أي الحالات يجب استخدامها حقًا؟ أنا مهتم بشكل خاص بـ `std::unique_ptr` و `std::shared_ptr` و `std::weak_ptr`. متى أختار أيًا منها؟ هل هناك عيوب خفية؟ سأكون ممتنًا لأمثلة الكود والشروحات للمبتدئين. <<>>

ما هو المؤشر الذكي؟

المؤشر الذكي