أول مرة هنا ؟ تفحص قواعد المشاركة و معلومات أخرى عن عرب overflow!
x

Static Vs Dynamic array

+1 صوت
299 مشاهدات

ما الفرق بين static array و dynamic array في لغة سي بلس وامثله علي كل منهم

إجابة واحدة

+4 صوت

 
أفضل إجابة

ٍيتم إنشاء المصفوفات المحلية static array على المكدس stack ، ولها مدة تخزين تلقائية يتم تدميرها بعدها و لا تحتاج لإدارة الذاكرة يدويا (أى مسحها منها ) ، لكنها تدمر تلقائيا عند الخروج من الدالة المستخدمة فيها . ولها حجم ثابت (حدود فى الحجم ) فى أغلب الوقت.

int foo[10];

المصفوفات التي تم إنشاؤها باستخدام new تسمى المصفوفات الديناميكية Dynamic array,يتم تخزينها فى ال heap على عكس ال Static array . ويمكن أن تأخذ أى حجم ، ولكن تحتاج إلى ادارة الذاكرة فى حالة رغبتك فى أن تمسحها و تعيد استخدام المساحة فى شىء أخر .

int* foo = new int[10];
delete[] foo;

ال Heap هى مساحة حرة فى الذاكرة يمكنك أن تستقطع منها أجزاء لعمل objects و لكن يجب ان تديرها بنفسك للمحافظة على المساحة على عكس ال stack .

static array allocation = array lives in stack
يعني ايه موش فاهم هل التعريف اللي كاتبه ف اللينك دا static ولا dynamic
static >>>>>>>
لكن في تعريف ال static array انها fixed size بالكود دا انا غيرت ال size ودا معناها انها ف الحاله دي dynamic لكن عيوب الكتابه بالطريقه دي ان فيه limit محدده للتخزين ف الميموري بيها دا بالنسبه لل dynamic بالنسبه لل static لازم يكون ال size بتاعها constant علشان مغيرش فيه بعد كدا سواء باني اضيف او انقص

مشكور يا بشمهندس علي وقتك وبجد عجبني اوي المناقشه في الموضوع الجميل دا :D
لم أنتبه فى الكود الى نقطة تغيير الحجم , كنت انظر الى التعريف و لكنك هنا لم تغير ال size
انت هنا قمت بالولوج الى مكان فى الذاكرة بعد انتهاء عناوين ال array بعدد 50 مكان فى حجم المتغير الخاص ب ال array ,
, وهذا لم يجعلها dynamic
Araboverflow أهلا بكم فى عرب Overflow
المجتمع العربى للأسئلة و الأجوبة التقنية.

أحدث الشارات

سؤال ذائع الصيت
- Mohamed Slama -
100 نقطة
- عرفة غلمش -
سؤال مشهور
- hamza -
100 نقطة
- afahad -
سؤال ذائع الصيت
- mohamed eid -
...