39 lines
2.6 KiB
Markdown
39 lines
2.6 KiB
Markdown
---
|
|
title: malloc
|
|
localeTitle: malloc
|
|
---
|
|
# malloc في C
|
|
|
|
malloc () هي دالة مكتبة تسمح C لتخصيص الذاكرة بشكل حيوي من الكومة. كومة الذاكرة المؤقتة هي منطقة من الذاكرة حيث يتم تخزين شيء ما.
|
|
|
|
malloc () جزء من stdlib.h ولتتمكن من استخدامه تحتاج إلى استخدام `#include <stdlib.h>` .
|
|
|
|
## باستخدام Malloc
|
|
|
|
يخصص malloc () ذاكرة حجم المطلوب وإرجاع مؤشر إلى بداية كتلة المخصصة. للاحتفاظ بالمؤشر المرتجع ، يجب علينا إنشاء متغير. يجب أن يكون المؤشر من نفس النوع المستخدم في بيان malloc.
|
|
سنقوم هنا بإعداد مؤشر إلى مجموعة من النمل قريباً
|
|
|
|
`int* arrayPtr;
|
|
`
|
|
|
|
بخلاف اللغات الأخرى ، لا تعرف C نوع البيانات الذي تقوم بتخصيص الذاكرة له ؛ يجب أن يقال. لحسن الحظ ، لدى C دالة تسمى `sizeof()` يمكننا استخدامها.
|
|
|
|
`arrayPtr = (int *)malloc(10 * sizeof(int));
|
|
`
|
|
|
|
استخدم هذا البيان malloc لوضع الذاكرة جانباً لمجموعة من 10 أعداد صحيحة. بما أن الأحجام يمكن أن تتغير بين أجهزة الكمبيوتر ، فمن المهم استخدام الدالة sizeof () لحساب الحجم على الكمبيوتر الحالي.
|
|
|
|
ستحتاج أي ذاكرة مخصصة أثناء تنفيذ البرنامج إلى تحريرها قبل إغلاق البرنامج. `free` الذاكرة ، يمكننا استخدام وظيفة free ()
|
|
|
|
`free( arrayPtr );
|
|
`
|
|
|
|
سيؤدي هذا البيان إلى إلغاء تخصيص الذاكرة التي تم تخصيصها مسبقًا. لا يأتي C مع `garbage collector` مثل بعض اللغات الأخرى ، مثل Java. نتيجة لذلك ، سيتم تخصيص الذاكرة التي لم يتم تحريرها بشكل صحيح بعد إغلاق البرنامج.
|
|
|
|
# قبل أن تذهب ...
|
|
|
|
## مراجعة
|
|
|
|
* يتم استخدام Malloc لتخصيص الذاكرة الحيوية وهو مفيد عندما لا تعرف مقدار الذاكرة المطلوبة أثناء وقت التحويل البرمجي.
|
|
* تخصيص الذاكرة يسمح بوجود كائنات خارج نطاق الكتلة الحالية.
|
|
* C يمر بقيمة بدلاً من المرجع. استخدام malloc لتعيين الذاكرة ثم تمرير المؤشر إلى دالة أخرى أكثر فاعلية من إعادة إنشاء الدالة البنية. |