الفرق بين calloc و malloc

جدول المحتويات:

الفرق بين calloc و malloc
الفرق بين calloc و malloc

فيديو: الفرق بين calloc و malloc

فيديو: الفرق بين calloc و malloc
فيديو: malloc vs calloc Differences Explained | C Programming Tutorial 2024, شهر نوفمبر
Anonim

الفرق الرئيسي - calloc مقابل malloc

في البرمجة ، من الضروري تخزين البيانات. يتم تخزين البيانات في الذاكرة. تُعرف مواقع الذاكرة هذه بالمتغيرات. كل متغير له نوع معين. يمكن أن تكون أعدادًا صحيحة ، وعوامات ، ومضاعفات ، وأحرفًا ، وما إلى ذلك. هناك أيضًا هياكل بيانات يمكنها تخزين مجموعة متسلسلة ذات حجم ثابت من العناصر من نفس النوع. إنها مجموعة. يجب على المبرمج أن يعلن عن حجم المصفوفة. إذا أعلن المبرمج عن مصفوفة من الأعداد الصحيحة لخمسة عناصر ، فلا يمكن تعيين قيمة لمؤشر أكبر من الحجم المعلن. تم إصلاح تخصيص الذاكرة ، ولا يمكن تغييره في وقت التشغيل.طريقة تخصيص الذاكرة الأخرى هي تخصيص الذاكرة الديناميكي. يساعد التخصيص الديناميكي للذاكرة على تخصيص المزيد من الذاكرة عند الحاجة وتحريرها عند الضرورة. يحتوي ملف الرأس على أربع وظائف لتخصيص الذاكرة الديناميكي. calloc و malloc هما وظيفتان من هذا القبيل. يتمثل الاختلاف الرئيسي بين calloc و malloc في أن calloc يخصص الذاكرة وأيضًا تهيئة كتل الذاكرة المخصصة إلى الصفر بينما يقوم malloc بتخصيص الذاكرة ولكنه لا يقوم بتهيئة تلك الذاكرة المخصصة إلى الصفر. الوصول إلى المحتوى في calloc سيعطي صفرًا ، لكن malloc سيعطي قيمة غير صحيحة.

ما هو calloc؟

تخصيص الذاكرة هو عملية تخصيص الذاكرة للبرامج المنفذة. في بعض الأحيان يكون من الضروري تغيير حجم الذاكرة. لذلك ، يتم استخدام تخصيص الذاكرة الديناميكي. يتم ذلك باستخدام المؤشرات. المؤشرات هي متغيرات مرجعية تحمل عنوان متغير آخر.

الفرق بين Calloc و malloc
الفرق بين Calloc و malloc

الشكل 01: calloc و malloc

calloc تعني "تخصيص متجاور". يخصص كتل متعددة من الذاكرة بنفس الحجم. بناء جملة calloc كما يلي. يتطلب حجتين. هم عدد الكتل وحجم كل كتلة. تُرجع الدالة calloc مؤشرًا فارغًا ، لذلك يتم استخدام عامل الصب لإرجاع نوع المؤشر وفقًا لنوع البيانات المطلوب.

باطلcalloc (size_t num، size_t size) ؛

راجع برنامج C البسيط أدناه.

تشمل

تشمل

int main () {

int ptr=(int) calloc (20، sizeof (int)) ؛

إذا (ptr==NULL) {

printf ("الذاكرة غير مخصصة") ؛

}

آخر {

printf ("الذاكرة مخصصة") ؛

}

return 0 ؛

}

وفقًا للبرنامج أعلاه ، يتم تخصيص كتلة متجاورة من الذاكرة يمكنها استيعاب 20 عنصرًا. سيكون لكل منها حجم عدد صحيح. يتم استخدام sizeof (int) لأن نوع العدد الصحيح يختلف من مترجم إلى مترجم.

إذا كان تخصيص الذاكرة ناجحًا ، فسيعيد العنوان الأساسي لكتلة الذاكرة. هذا يعني أن المؤشر ptr يشير الآن إلى العنوان الأساسي لكتلة الذاكرة هذه. تتم تهيئة جميع المناطق المخصصة إلى أصفار. ستقوم بطباعة رسالة Memory Allocated. إذا لم ينجح تخصيص الذاكرة ، فسيعيد المؤشر الفارغ. لذلك ستطبع ذاكرة غير مخصصة للرسالة.

ما هو malloc؟

تُستخدم وظيفة malloc لتخصيص المقدار المطلوب من البايتات في الذاكرة. بناء جملة malloc على النحو التالي. الحجم يمثل الذاكرة المطلوبة بالبايت.

باطلmalloc (size_t_size) ؛

تقوم الوظيفة malloc بإرجاع مؤشر فارغ ، لذلك يتم استخدام عامل الصب لإرجاع نوع المؤشر وفقًا لنوع البيانات المطلوب.

راجع برنامج C البسيط أدناه مع وظيفة malloc.

تشمل

تشمل

int main () {

int ptr=(int) malloc (10sizeof (int)) ؛

إذا (ptr==NULL) {

printf ("الذاكرة غير مخصصة") ؛

}

آخر {

printf ("الذاكرة مخصصة") ؛

}

return 0 ؛

}

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

ما هي أوجه التشابه بين calloc و malloc؟

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

ما هو الفرق بين calloc و malloc؟

calloc مقابل malloc

calloc هي وظيفة لتخصيص الذاكرة الديناميكي في ملف رأس لغة C stdlib.h الذي يخصص عددًا معينًا من البايتات ويهيئها إلى الصفر. malloc هي وظيفة لتخصيص الذاكرة الديناميكي في ملف رأس لغة C stdlib.h الذي يخصص عددًا محددًا من البايتات.
المعنى
calloc تعني التخصيص المتجاور. يشير malloc إلى تخصيص الذاكرة.
بناء الجملة
calloc يتبع بناء جملة مشابه لـ voidcalloc (size_t_num، size_t size) ؛ malloc يتبع صيغة مشابهة لـ voidmalloc (size_t_size) ؛
عدد الحجج
calloc يأخذ حجتين. هم عدد الكتل وحجم كل كتلة. malloc يأخذ حجة واحدة. إنه عدد من البايتات.
سرعة
calloc يستغرق وقتًا أطول قليلاً من malloc. هذا بسبب الخطوة الإضافية المتمثلة في تهيئة الذاكرة المخصصة بمقدار صفر. malloc أسرع من calloc.

ملخص - calloc مقابل malloc

في تخصيص الذاكرة الثابتة مثل استخدام المصفوفات ، يتم إصلاح الذاكرة. إذا تم تخزين عدد قليل من العناصر ، فسيتم إهدار بقية الذاكرة. قد يتسبب أيضًا في حدوث أخطاء عندما تكون الذاكرة المخصصة صغيرة من الذاكرة المطلوبة. لذلك ، يتم استخدام تخصيص الذاكرة الديناميكي. في لغة C ، يوفر calloc و malloc تخصيصًا ديناميكيًا للذاكرة. الفرق بين calloc و malloc هو أن calloc يخصص الذاكرة وأيضًا تهيئة كتل الذاكرة المخصصة إلى الصفر بينما يقوم malloc بتخصيص الذاكرة ولكنه لا يقوم بتهيئة كتل الذاكرة إلى الصفر. يأخذ Malloc وسيطتين بينما يأخذ calloc وسيطتين.

قم بتنزيل ملف PDF الخاص بـ calloc مقابل malloc

يمكنك تنزيل نسخة PDF من هذه المقالة واستخدامها لأغراض غير متصلة بالإنترنت وفقًا لملاحظة الاقتباس. يرجى تنزيل نسخة PDF من هنا: الفرق بين calloc و malloc

موصى به: