3.7 KiB
3.7 KiB
title, localeTitle
| title | localeTitle |
|---|---|
| Dynamic Memory Allocation | تخصيص الذاكرة الديناميكية |
تخصيص الذاكرة الديناميكي في C ++
ما هو تخصيص الذاكرة الديناميكي في C ++؟
- يشير تخصيص الذاكرة في C ++ إلى الذاكرة المخصصة للمتغيرات التي تستخدمها في البرنامج.
- تخصيص الذاكرة الديناميكي هو الذاكرة التي يتم تخصيصها للمتغيرات في وقت التشغيل كما يتم تحديد مقدار الذاكرة المطلوبة في وقت التشغيل.
- تأتي هذه الذاكرة من كومة الذاكرة المؤقتة ، في حين أن المتغيرات غير الساكنة والمتغيرات المحلية تحصل على ذاكرة من المكدس .
- في C ++ ، يمكن للمبرمج إجراء عمليات تخصيص الذاكرة يدوياً ، ويسمى تخصيص الذاكرة الحيوية .
- كان من الممكن في C القيام بتخصيص الذاكرة الديناميكية ، باستخدام وظائف calloc و malloc لتخصيص الذاكرة واستخدام وظيفة حرة لإزالة تخصيص الذاكرة الديناميكية.
- في C ++ ، بالإضافة إلى أعلاه ، هناك وظيفتان ، جديدتان وحذفان لأداء تخصيص الذاكرة الديناميكية وإلغاء التخصيص.
مشغل جديد
- يمكن للمشغل
newمنح الذاكرة مبرمج من كومة الذاكرة المؤقتة (إذا كانت متوفرة). إذا كانت الذاكرة التي يطلبها المبرمج متاحة ، يقوم المشغلnewبتهيئة الذاكرة ثم يقوم بإرجاع العنوان (المرجع) للذاكرة المخصصة. - بناء الجملة
pointer-variable-type=pointer-variable-typedata-type;جديدdata-type;
المثال 1:int *ptr= newint;
المثال 2:int *ptr2= newint[10];
هنا ، يعدpointer-variable-typeمؤشرًاdata type. يمكن أن يكونdata-typeint أو char وما إلى ذلك أو نوع بيانات المعرفة من قبل المستخدم.
مشغل DELETE
-
تقع على عاتق المبرمج مسؤولية إلغاء تخصيص الذاكرة الموزعة ديناميكياً ، وإلا لن تكون الذاكرة متوفرة لإعادة توزيعها حتى نهاية البرنامج.
-
لإلغاء تخصيص الذاكرة ، يمكن
deleteالمشغل ويمكن استخدامه بواسطة المبرمج. -
بناء الجملة
حذفpointer-type-variable;
على سبيل المثال ، لتحرير الذاكرة المخصصة في المثال 1 أعلاه ، فإننا نكتب:
delete ptr;
وبالمثل ، على سبيل المثال 2 ، يمكن تحرير الذاكرة من خلال:
delete ptr2؛تسريبات الذاكرة
تحدث التساؤلات عندما تفشل في إلغاء تخصيص الذاكرة الديناميكية التي قمت بتخصيصها من خلال المشغل
Newفي نهاية البرنامج. إذا لم تقم بإلغاء تخصيصها مع عامل التشغيل Delete ، فسيستمر الكمبيوتر في إنشاء ذاكرة جديدة في الذاكرة المؤقتة في كل مرة يتم فيها تشغيل البرنامج. يؤدي هذا إلى إبطاء الكمبيوتر لأنه لم يتم حذف الذاكرة وتقلل الذاكرة المتوفرة لديك.