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

40 lines
3.7 KiB
Markdown
Raw Normal View History

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