ما هو الفرق بين calloc و malloc؟ أي واحد هو الأفضل لتخصيص الذاكرة؟


الاجابه 1:

calloc = malloc + memset () (memset 0)

Malloc

الحجج

malloc يأخذ حجة واحدة فقط.

malloc (الحجم بالبايت) ؛

التهيئة

malloc لا تهيئة منطقة الذاكرة.

سيكون مساحة الذاكرة المخصصة قيم البيانات المهملة.

Calloc

الحجج

calloc يأخذ حجتين.

calloc (عدد العناصر ، حجم العنصر) ؛

التهيئة

calloc تهيئة منطقة الذاكرة إلى الصفر.

استنتاج:

استخدم calloc عندما تحتاج إلى تهيئة منطقة الذاكرة المخصصة ديناميكيًا إلى صفر.

خلاف ذلك ، استخدم malloc.

أرصدة المحتوى:

Log2Base2 - تصور نفسك

شكر!


الاجابه 2:

سؤال: ما هو الفرق بين calloc و malloc؟ أي واحد هو الأفضل لتخصيص الذاكرة؟

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

Point * ptrPoint = نقطة جديدة () ؛

والكائن الذي يتم تعيين نقاط ptrPoint إلى 0 بعد إنشائه. على هذا النحو - يكون calloc مفيدًا فقط إذا كنت تخصص مجموعة من العناصر الأولية (على عكس الهياكل). إذا كنت تنشئ صفيفًا من نوع الهيكل ، فربما تحتاج إلى استخدام malloc وتعيين كل بنية يدويًا في صفيف / كتلة الذاكرة على القيم المناسبة.


الاجابه 3:

سؤال: ما هو الفرق بين calloc و malloc؟ أي واحد هو الأفضل لتخصيص الذاكرة؟

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

Point * ptrPoint = نقطة جديدة () ؛

والكائن الذي يتم تعيين نقاط ptrPoint إلى 0 بعد إنشائه. على هذا النحو - يكون calloc مفيدًا فقط إذا كنت تخصص مجموعة من العناصر الأولية (على عكس الهياكل). إذا كنت تنشئ صفيفًا من نوع الهيكل ، فربما تحتاج إلى استخدام malloc وتعيين كل بنية يدويًا في صفيف / كتلة الذاكرة على القيم المناسبة.