كيفية تعريف مصفوفة ديناميكية ثنائية الأبعاد في C++ باستخدام العامل new؟
مرحبًا! بدأت للتو في تعلم C++ وواجهت مشكلة. أحتاج إلى إنشاء مصفوفة ثنائية الأبعاد، سيكون حجمها معروفًا فقط أثناء تنفيذ البرنامج. أعرف كيفية تعريف مصفوفة ثنائية الأبعاد ثابتة: `int arr[3][4];`، ولكن عندما أحاول جعل الأبعاد متغيرات، يشتكي المترجم.
جربت هذا الكود:
```cpp
int rows = 5, cols = 10;
int arr[rows][cols]; // خطأ! تحتاج إلى ثابت وقت الترجمة
```
قرأت عن الذاكرة الديناميكية وأدركت أنني بحاجة لاستخدام `new`. ولكن كيف أخصص الذاكرة بشكل صحيح لمصفوفة ثنائية الأبعاد؟ رأيت عدة خيارات على الإنترنت، لكنها جميعًا مختلفة. شخص ما يستخدم مصفوفة من المؤشرات، وآخر يخصص كتلة واحدة كبيرة من الذاكرة.
أرجو كتابة طريقة صحيحة وموثوقة لإنشاء مصفوفة ثنائية الأبعاد باستخدام `new`. يهمني بشكل خاص:
1. كيفية تخصيص الذاكرة.
2. كيفية الوصول إلى العناصر.
3. كيفية تحرير الذاكرة بشكل صحيح (لتجنب تسرب الذاكرة).
4. أي طريقة تعتبر أفضل ممارسة في C++ الحديث؟