--- title: Dynamic Memory Allocation localeTitle: تخصيص الذاكرة الديناميكية --- ## تخصيص الذاكرة الديناميكي في 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 ، فسيستمر الكمبيوتر في إنشاء ذاكرة جديدة في الذاكرة المؤقتة في كل مرة يتم فيها تشغيل البرنامج. يؤدي هذا إلى إبطاء الكمبيوتر لأنه لم يتم حذف الذاكرة وتقلل الذاكرة المتوفرة لديك.