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

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

محتويات

1. نظرة عامة والفرق الرئيسي
2. ما هو calloc
3. ما هو malloc
4. أوجه التشابه بين calloc و malloc
5. جنبا إلى جنب مقارنة - calloc مقابل malloc في شكل جدول
6. ملخص

ما هو calloc؟

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

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

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

الرجوع إلى برنامج بسيط أدناه جيم.

# تضمين

# تضمين

انت مين(){

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

إذا (ptr == NULL) {

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

}

آخر{

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

}

عودة 0 ؛

}

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

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

ما هو malloc؟

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

void * malloc (size_t_size) ؛

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

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

# تضمين

# تضمين

انت مين(){

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

إذا (ptr == NULL) {

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

}

آخر{

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

}

عودة 0 ؛

}

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

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


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

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

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

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

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

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

مرجع:

1. كومار ، كريشان. "الفرق بين Malloc و Calloc في C." Cs-Fundamentals.com ، Cs-Fundamentals.com. متاح هنا
2. "تخصيص ذاكرة ديناميكية C". ويكيبيديا ، مؤسسة ويكيميديا ​​، 13 يناير 2018. متاح هنا
3. "Calloc () مقابل malloc ()." GeeksforGeeks ، 14 يونيو 2017. متوفر هنا