freeCodeCamp/guide/arabic/cplusplus/dynamic-memory-allocation/index.md

3.7 KiB

title localeTitle
Dynamic Memory Allocation تخصيص الذاكرة الديناميكية

تخصيص الذاكرة الديناميكي في C ++

ما هو تخصيص الذاكرة الديناميكي في C ++؟

  • يشير تخصيص الذاكرة في C ++ إلى الذاكرة المخصصة للمتغيرات التي تستخدمها في البرنامج.
  • تخصيص الذاكرة الديناميكي هو الذاكرة التي يتم تخصيصها للمتغيرات في وقت التشغيل كما يتم تحديد مقدار الذاكرة المطلوبة في وقت التشغيل.
  • تأتي هذه الذاكرة من كومة الذاكرة المؤقتة ، في حين أن المتغيرات غير الساكنة والمتغيرات المحلية تحصل على ذاكرة من المكدس .
  • في C ++ ، يمكن للمبرمج إجراء عمليات تخصيص الذاكرة يدوياً ، ويسمى تخصيص الذاكرة الحيوية .
  • كان من الممكن في C القيام بتخصيص الذاكرة الديناميكية ، باستخدام وظائف calloc و malloc لتخصيص الذاكرة واستخدام وظيفة حرة لإزالة تخصيص الذاكرة الديناميكية.
  • في C ++ ، بالإضافة إلى أعلاه ، هناك وظيفتان ، جديدتان وحذفان لأداء تخصيص الذاكرة الديناميكية وإلغاء التخصيص.

مشغل جديد

  • يمكن للمشغل new منح الذاكرة مبرمج من كومة الذاكرة المؤقتة (إذا كانت متوفرة). إذا كانت الذاكرة التي يطلبها المبرمج متاحة ، يقوم المشغل new بتهيئة الذاكرة ثم يقوم بإرجاع العنوان (المرجع) للذاكرة المخصصة.
  • بناء الجملة
    pointer-variable-type = pointer-variable-type data-type; جديد data-type;
    المثال 1: int *ptr = new int;
    المثال 2: int *ptr2 = new int[10];
    هنا ، يعد pointer-variable-type مؤشرًا data type . يمكن أن يكون data-type int أو char وما إلى ذلك أو نوع بيانات المعرفة من قبل المستخدم.

مشغل DELETE

  • تقع على عاتق المبرمج مسؤولية إلغاء تخصيص الذاكرة الموزعة ديناميكياً ، وإلا لن تكون الذاكرة متوفرة لإعادة توزيعها حتى نهاية البرنامج.

  • لإلغاء تخصيص الذاكرة ، يمكن delete المشغل ويمكن استخدامه بواسطة المبرمج.

  • بناء الجملة
    حذف pointer-type-variable;
    على سبيل المثال ، لتحرير الذاكرة المخصصة في المثال 1 أعلاه ، فإننا نكتب:
    delete ptr;
    وبالمثل ، على سبيل المثال 2 ، يمكن تحرير الذاكرة من خلال:
    delete ptr2 ؛

    تسريبات الذاكرة

    تحدث التساؤلات عندما تفشل في إلغاء تخصيص الذاكرة الديناميكية التي قمت بتخصيصها من خلال المشغل New في نهاية البرنامج. إذا لم تقم بإلغاء تخصيصها مع عامل التشغيل Delete ، فسيستمر الكمبيوتر في إنشاء ذاكرة جديدة في الذاكرة المؤقتة في كل مرة يتم فيها تشغيل البرنامج. يؤدي هذا إلى إبطاء الكمبيوتر لأنه لم يتم حذف الذاكرة وتقلل الذاكرة المتوفرة لديك.