لماذا يجب على مبرمجي 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` قد يرمي استثناءات، وإذا حدث خطأ في المنشئ، فستتسرب الذاكرة أيضًا.
ولكن كيف يمكن إنشاء كائنات يجب أن توجد خارج نطاق الوظيفة؟ استخدام متغيرات عامة؟