Avatar ·

لماذا يجب على مبرمجي C++ تقليل استخدام `new`؟

مرحبًا أيها الزملاء! أنا مطور C++ مبتدئ وأحاول فهم أفضل الممارسات. أقرأ في كل مكان أنه يجب تجنب `new`، لكنني لا أفهم السبب تمامًا. في الكتب المدرسية غالبًا ما يُكتب: 'خصص الذاكرة في heap عبر `new`'، ثم يقول المطورون ذوو الخبرة: 'لا تفعل ذلك'. هذا يربكني. إليك مثال بسيط: أحتاج إلى إنشاء كائن سيعيش لفترة أطول من الوظيفة الحالية. أكتب: ```cpp class MyClass { public: MyClass() { std::cout << "تم الإنشاء\n"; } ~MyClass() { std::cout << "تم التدمير\n"; } void doWork() { /* ... */ } }; void process() { MyClass* obj = new MyClass(); obj->doWork(); // نسيت delete! تسرب للذاكرة. } ``` المشكلة: غالبًا ما أنسى استدعاء `delete`، وهذا يؤدي إلى تسرب الذاكرة. كما سمعت أن `new` قد يرمي استثناءات، وإذا حدث خطأ في المنشئ، فستتسرب الذاكرة أيضًا. ولكن كيف يمكن إنشاء كائنات يجب أن توجد خارج نطاق الوظيفة؟ استخدام متغيرات عامة؟