3.7 KiB
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
= newint;
المثال 2:int *ptr2
= newint[10];
هنا ، يعدpointer-variable-type
مؤشرًاdata type
. يمكن أن يكونdata-type
int أو char وما إلى ذلك أو نوع بيانات المعرفة من قبل المستخدم.
مشغل DELETE
-
تقع على عاتق المبرمج مسؤولية إلغاء تخصيص الذاكرة الموزعة ديناميكياً ، وإلا لن تكون الذاكرة متوفرة لإعادة توزيعها حتى نهاية البرنامج.
-
لإلغاء تخصيص الذاكرة ، يمكن
delete
المشغل ويمكن استخدامه بواسطة المبرمج. -
بناء الجملة
حذفpointer-type-variable;
على سبيل المثال ، لتحرير الذاكرة المخصصة في المثال 1 أعلاه ، فإننا نكتب:
delete ptr;
وبالمثل ، على سبيل المثال 2 ، يمكن تحرير الذاكرة من خلال:
delete ptr2
؛تسريبات الذاكرة
تحدث التساؤلات عندما تفشل في إلغاء تخصيص الذاكرة الديناميكية التي قمت بتخصيصها من خلال المشغل
New
في نهاية البرنامج. إذا لم تقم بإلغاء تخصيصها مع عامل التشغيل Delete ، فسيستمر الكمبيوتر في إنشاء ذاكرة جديدة في الذاكرة المؤقتة في كل مرة يتم فيها تشغيل البرنامج. يؤدي هذا إلى إبطاء الكمبيوتر لأنه لم يتم حذف الذاكرة وتقلل الذاكرة المتوفرة لديك.