مالوك مقابل الجديد: الفرق والمقارنة

Malloc هي ميزة في لغة C ، في حين أن الجديد هو ميزة أساسية في C ++. Malloc هو في الأساس وظيفة قياسية ، بينما الجديد هو عامل. لا ينبغي استخدام Malloc في C ++ بدون سبب أساسي.

جديد / حذف يجب عدم خلطه مع malloc / free. على عكس malloc ، الجديد لا يحتاج إلى حجم المشغل.

الوجبات السريعة الرئيسية

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

مالوك مقابل الجديد

Malloc هي دالة C قياسية لا يمكن استخدامها إلا في C ++ ولا تسمح بالتجاوز قانونيًا. إنه يرمز إلى تخصيص الذاكرة ويستخدم لتخصيص كتلة من الذاكرة. الجديد هو عامل يستخدم فقط في C ++ ؛ لا يمكن استخدامه في لغة سي ويحسب حجم الذاكرة مع مترجم.

مالوك مقابل الجديد

يتطلب Malloc معرفة الحجم الدقيق للمشغل لمعرفة حجم الذاكرة التي يجب تخصيصها. مالوك أيضًا غير قادر على إجراء مكالمة إلى منشئ. يعود إلى NULL عندما يشعر أن هناك بعض النقص في الذاكرة.

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

جدول المقارنة

معلمات المقارنةمالوكجديد
مكان في اللغةيتم استخدام Malloc بشكل متكرر في C. نادرًا ، ويتم استخدامه في C ++.
الجديد يستخدم فقط في C ++.
الإسترجاع : يعود إلى الفراغ.
عوائد جديدة للنوع المناسب.
مقاسفي malloc ، يجب حساب الحجم يدويًا.
في New ، يتم حساب الحجم المطلوب للمترجم بواسطة مترجم
تجاوزلا يمكن تجاوز وظيفة malloc بشكل قانوني.
يوفر المشغل الجديد فرصة للتجاوز.
النوعMalloc هي دالة C قياسية.
يستخدم عوامل مثل == ، + = إلخ.
السلوك عند عدم وجود ذاكرة كافيةيعود Malloc إلى NULL عندما يكون هناك نقص في الذاكرة.
جديد يطرح استثناء أثناء نقص الذاكرة.
إلغاء التخصيصيجب مطابقة malloc () مع () مجاني.
يجب أن تتطابق () الجديدة مع الحذف ().
يخصص ذاكرة لـتقريبا كل شيء.
فقط للمصفوفات والكائنات والتراكيب.

ما هو مالوك؟

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

اقرأ أيضا:  تم فحصه مقابل استثناء لم يتم التحقق منه: الفرق والمقارنة

تقوم بإرجاع نوع فارغ من مؤشر لأنه يحمل بعض قيمة القمامة. لا يقوم بتهيئة الذاكرة في وقت التنفيذ.

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

يحتوي على 2 حجج. يجب دائمًا مطابقة malloc () مع () مجاني. يجب حساب حجم الذاكرة في malloc يدويًا. يتطلب معرفة مسبقة عن حجم المشغل لتخصيص حجم الذاكرة.

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

يعمل malloc بشكل أبطأ من عامل جديد في C ++ لأن المشغل يكون دائمًا أسرع من الوظيفة.

التركيب اللغوي: - ptr = (castType *) malloc (size) ؛

ما الجديد؟

الجديد هو عامل في C ++ والذي لا يمكن استخدامه في C. يمكن للمشغل الجديد استدعاء مُنشئ كائن ويمكنه تهيئة الذاكرة. يتم استدعاء المُنشئ فقط بعد تخصيص الذاكرة.

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

في C ++ ، يتم تطبيق عامل التشغيل الجديد لتقديم طلب لتخصيص الذاكرة على الكومة.

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

اقرأ أيضا:  FFT مقابل DFT: الفرق والمقارنة

يتم استخدام هذا المشغل لتخصيص الذاكرة الديناميكية وبناء الكائن والتدمير. يتم تخصيص الذاكرة للكائنات من مجموعة تعرف باسم المخزن المجاني. إنه يعمل بشكل أسرع بكثير من malloc لأنه عامل وليس وظيفة. 

التركيب النحوي: - pointer-variable = new data-type ؛

الاختلافات الرئيسية بين مالوك والجديد

  1. Malloc هي دالة C قياسية ، في حين أن الجديد هو عامل.
  2. يستخدم Malloc بشكل أساسي في C بينما يستخدم new فقط في C ++. يجب استخدام Malloc فقط في C ++ عند الضرورة.
  3. عندما لا توجد ذاكرة كافية ، يعود malloc إلى NULL بينما يطرح new استثناءً.
  4. يجب دائمًا مطابقة malloc () مع حر () و () جديد مع حذف. لا ينبغي تبادل هذين الاثنين
  5. يعود Malloc إلى الفراغ بينما يعود الجديد إلى النوع المناسب.
  6. يخصص مالوك الذاكرة لأي شيء وكل شيء تقريبًا. الجديد يخصص ذاكرة للمصفوفات والكائنات والبنى.
  7. يجب حساب الحجم يدويًا لـ malloc ، بينما في الجديد ، يتم حسابه تلقائيًا بواسطة المترجم.
  8. لا يمكن لوظيفة Malloc استدعاء مُنشئ كائن ، لكن عامل جديد يمكنه ذلك.
  9. التجاوز غير مسموح به قانونًا في malloc ولكنه مسموح به في الجديد.
مراجع حسابات
  1. https://dl.acm.org/doi/abs/10.1145/1854273.1854303
  2. https://dl.acm.org/doi/abs/10.1145/2948618.2954331

آخر تحديث: 11 يونيو 2023

النقطة 1
طلب واحد؟

لقد بذلت الكثير من الجهد في كتابة منشور المدونة هذا لتقديم قيمة لك. سيكون مفيدًا جدًا بالنسبة لي ، إذا كنت تفكر في مشاركته على وسائل التواصل الاجتماعي أو مع أصدقائك / عائلتك. المشاركة هي ♥ ️

12 فكرة عن "Malloc vs New: الفرق والمقارنة"

  1. إن بناء الجملة المقدم لكل من Malloc وNew يجعل من السهل فهم كيفية تنفيذهما. تقوم هذه المقالة بعمل ممتاز في كسر المفاهيم المعقدة.

    رد
  2. إنني أقدر الشرح الشامل لاستخدام Malloc في C وC++، بالإضافة إلى الخصائص التفصيلية للمشغل الجديد في C++. مقارنة مفيدة للغاية.

    رد
  3. تحليل متعمق لوظائف Malloc والجديدة في C وC++. تتم مناقشة إيجابيات وسلبيات كل من أساليب تخصيص الذاكرة بشكل فعال.

    رد
  4. يتم عرض الأفكار التفصيلية حول Malloc وNew، بالإضافة إلى المقارنة بينهما من حيث الاستخدام والسلوك، بشكل جيد للغاية. قراءة عظيمة للمبرمجين.

    رد
  5. الاختلافات الرئيسية التي تم إبرازها بين Malloc وNew تجعل من السهل التمييز بين حالات الاستخدام الخاصة بهما. المقالة مصدر قيم للمبرمجين.

    رد
  6. توفر هذه المقالة مقارنة شاملة بين Malloc و New، والشروحات واضحة جدًا وسهلة المتابعة. يجب قراءته للمهتمين ببرمجة C وC++.

    رد
  7. يعد القسم الذي يوضح سلوك Malloc وNew عندما يكون هناك نقص في الذاكرة مفيدًا بشكل خاص ويعزز فهم الفرد لتخصيص الذاكرة الديناميكية في C وC++.

    رد
  8. يساعد جدول المقارنة المقدم في تلخيص الاختلافات بين Malloc وNew بطريقة واضحة وموجزة. استمتعت بقراءتها.

    رد
  9. تقوم المقالة بعمل رائع في تسليط الضوء على عملية تخصيص الذاكرة باستخدام Malloc وNew، وكيف تختلفان من حيث تهيئة الذاكرة وتحرير الذاكرة.

    رد
  10. تشرح هذه المقالة بوضوح الاختلافات بين Malloc وNew، واستخدامهما في C وC++، والسلوكيات المحددة لكل من الوظائف والمشغلين. مليء بالمعلومات.

    رد

اترك تعليق

هل تريد حفظ هذه المقالة لوقت لاحق؟ انقر فوق القلب الموجود في الزاوية اليمنى السفلية للحفظ في مربع المقالات الخاصة بك!