malloc في C: شرح تخصيص الذاكرة الديناميكية في C

ما هو malloc () في سي؟

malloc () هي وظيفة مكتبة تسمح لـ C بتخصيص الذاكرة ديناميكيًا من الكومة. الكومة هي مساحة من الذاكرة حيث يتم تخزين شيء ما.

يعد malloc () جزءًا من stdlib.h ولتتمكن من استخدامه ، يجب عليك استخدامه #include .

كيفية استخدام مالوك

يخصص malloc () ذاكرة بالحجم المطلوب ويعيد مؤشرًا إلى بداية الكتلة المخصصة. للاحتفاظ بهذا المؤشر المرتجع ، يجب علينا إنشاء متغير. يجب أن يكون المؤشر من نفس النوع المستخدم في تعليمة malloc.

سنقوم هنا بعمل مؤشر لمجموعة من ints قريباً

int* arrayPtr;

بخلاف اللغات الأخرى ، لا تعرف لغة C نوع البيانات التي تخصص لها الذاكرة ؛ يجب أن يقال. لحسن الحظ ، للغة C وظيفة تسمى sizeof()يمكننا استخدامها.

arrayPtr = (int *)malloc(10 * sizeof(int));

استخدم هذا البيان malloc لتخصيص ذاكرة لمجموعة من 10 أعداد صحيحة. نظرًا لأن الأحجام يمكن أن تتغير بين أجهزة الكمبيوتر ، فمن المهم استخدام وظيفة sizeof () لحساب الحجم على الكمبيوتر الحالي.

يجب تحرير أي ذاكرة مخصصة أثناء تنفيذ البرنامج قبل إغلاق البرنامج. إلى freeالذاكرة، يمكننا استخدام وظيفة مجانا ()

free( arrayPtr );

هذا البيان سوف يلغي تخصيص الذاكرة المخصصة مسبقًا. لا يأتي C مع garbage collectorمثل بعض اللغات الأخرى ، مثل Java. نتيجة لذلك ، سيستمر تخصيص الذاكرة التي لم يتم تحريرها بشكل صحيح بعد إغلاق البرنامج.

قبل أن تكمل ...

مراجعة

  • يستخدم Malloc لتخصيص الذاكرة الديناميكية ويكون مفيدًا عندما لا تعرف مقدار الذاكرة المطلوبة أثناء وقت الترجمة.
  • يسمح تخصيص الذاكرة للكائنات بالوجود خارج نطاق الكتلة الحالية.
  • يمر C بالقيمة بدلاً من المرجع. يعد استخدام malloc لتعيين ذاكرة ، ثم تمرير المؤشر إلى وظيفة أخرى ، أكثر كفاءة من جعل الوظيفة تعيد إنشاء الهيكل.

مزيد من المعلومات حول برمجة لغة سي:

  • دليل المبتدئين لبرمجة لغة سي
  • إذا ... أوضح بيان آخر في C
  • وأوضح العامل الثلاثي في ​​C.